我让Meteor.js与Leaflet.js交谈,以便能够在“2dsphere”索引的Collection的$ near查询周围显示有限的标记。
所以我索引我的GeoJSON坐标:
Locations._ensureIndex({'geometry.coordinates':'2dsphere'});
这一切都有效,直到我使用$ near运算符显示超过-90到90经度的标记。
纬度限制在-85到85之间,但经度在-90到90之间停止,而不是预期的-180到180.
所以这很好用:
Leaflet map setView()显示我想在$ curson附近放置地图的部分:
window.map = L.map('map').setView([10,50],11);
然后是Server $ near游标 - 这可以正常工作:
Meteor.publish('locations', function() {
return Locations.find({'geometry.coordinates':{ $near :
{ $geometry :
{ type : "Point" ,
coordinates: [10,50] } },
$maxDistance : 10000
}
});
});
但是一旦我调整坐标
[-33,151]
传单地图正确显示位置,但mongo $ near会抛出错误:
$near requires a geojson point
这是公平的,因为这是一个无效点,但如果我将其更改为:
[151,-33]
然后Leaflet地图没有显示正确的位置,$ near运算符不起作用。
为什么geoJSON经度坐标限制在-90到90之间?以及如何在某个位置显示和使用$ near运算符:
lat: -33 and long: 151
答案 0 :(得分:1)
解决了!
这与在地图中添加标记的看似无关的Leaflet.js方法有关。
最初我用过:
var location=L.marker(mark.geometry.coordinates).addTo(window.map);
将此更改为:
var location=L.geoJson(mark).addTo(window.map);
这意味着我实际上可以将$ near光标设置为仅在我的坐标周围显示标记[-33,151]