gpt4 book ai didi

javascript - Node.js 如何将 geojson 从 mongodb 传递到我可以在前端使用的对象

转载 作者:太空宇宙 更新时间:2023-11-04 00:38:27 25 4
gpt4 key购买 nike

我正在尝试对存储在 mongoDB 中的 5m 个点进行聚类。 1 个查询的最大结果目前约为 1m,因此我决定使用: PruneCluster对于第一视觉效果。点存储为 geoJSON 对象,并且它们上有一个 2dsphere 索引。

我使用 native node.js 驱动程序连接到 mongodb 并查询以查找多边形内的点,这只会从集合和路由结果中返回 loc 字段以供预览:

router.get('/map', function(resq,res) {
var MongoClient = mongodb.MongoClient;
var url = 'mongodb://localhost:27017/airboost';

MongoClient.connect(url, function(err, db) {
if(err){
console.log('Unable to connect to db ', err);
} else {
console.log('Connected!!!');

var collection = db.collection('listingsF');

collection.find({
loc: {
$geoWithin: {
$geometry: {
type : "Polygon" ,
coordinates: [[[121.48521363894814,31.41360430073249],[...],[121.48865692654915,31.41168940543709]]]
}
}
}
},{loc:1}).toArray(function(err, result){

if (err) {
res.send(err);
} else if (result.length) {
res.send(result);
} else {
res.send('Nothing found');
}
db.close();
});
}
});
});

我得到了这样的对象列表:

[
{
"_id": "567f972bad55ac0797baa75b",
"loc": {
"type": "Point",
"coordinates": [
-85.84556526181,
10.29620625503
]
}
},
{
"_id": "567f972bad55ac0797baa75c",
"loc": {
"type": "Point",
"coordinates": [
-54.943878777465,
-34.964002797642
]
}
}
]

然后我需要以某种方式将该结果传递到/public 文件夹中的脚本中运行,这样我就可以在传单 map 上显示集群:

var pruneCluster = new PruneClusterForLeaflet();
...
var marker = new PruneCluster.Marker(latitude, longitude);
pruneCluster.RegisterMarker(marker);
...
leafletMap.addLayer(pruneCluster);

我可以用jade以任何我想要的方式打印内容,但我不知道如何将所有mongodb数据作为标记传递到PruneCluster。我不需要完整的代码,只需要一个指向方向的点。有人可以帮助我吗?

最佳答案

您可以轻松地在传递对象的jade中创建一个变量:

// server.js
res.render('something', {
something: mogoDBObject
});

// Your template.jade
script.
var myGeoJSONArray = !{something};
// If you're getting problems parsing the array of objects
// i.e. "something" becomes something like [[object Object], ...]
// use myGeoJSONArray = JSON.parse('!{JSON.stringify(something)}');
script(src='path/to/public/folder/main.js')

// path/to/public/folder/main.js
/* Do Something with your variable myGeoJSON */
myGeoJSONArray.forEach(geoJSON=>{
var marker = new PruneCluster.Marker(...geoJSON.loc.coordinates.reverse());
marker.push(marker);
...
});

关于javascript - Node.js 如何将 geojson 从 mongodb 传递到我可以在前端使用的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37890077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com