Meteor.js - mongodb $ near $ geometry GeoJSON点坐标经度限制 - Leaflet.js geoJson

时间:2014-03-13 09:33:40

标签: mongodb meteor leaflet geojson

我让Meteor.js与Leaflet.js交谈,以便能够在“2d​​sphere”索引的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 

1 个答案:

答案 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]