我正在使用最新版本的meteor,我已经创建了一个架构,我想在架构中添加一个位置。我想知道使用autoform将位置保存到集合中的最佳实践是什么,最终根据地理位置和邻近度进行查询。
答案 0 :(得分:0)
最新的Meteor附带Mongo 3.2
Mongo 3.2使用GeoJSON让您使用不同类型的几何体描述位置。例如,您可以将位置标识为空格中的点,如:
{
location: {
type: "Point",
coordinates: [-73.856077, 40.848447]
},
name: "Morris Park Bake Shop"
}
或多边形如:
{
geometry: {
type: "Polygon",
coordinates: [[
[ -73.99, 40.75 ],
...
[ -73.98, 40.76 ],
[ -73.99, 40.75 ]
]]
},
name: "Hell's Kitchen"
}
这使您可以进行如下复杂的查询:
const neighborhood = Neighborhoods.findOne({geometry: {$geoIntersects: {$geometry: {type: "Point", coordinates: [ -73.93414657, 40.82302903 ]}}}});
const restaurants = Restaurants.find({location:{$geoWithin:{$geometry: neighborhood.geometry}}})
(来自此mongo tutorial的例子)
这是mongo推荐的使用索引和分片支持来保存地理空间数据的方法。
有一个autoform地图插件:https://github.com/yogiben/meteor-autoform-map/ - 具有GeoJSON支持