I've got Meteor.js to talk with Leaflet.js to be able to display limited markers around the $near query of a "2dsphere" indexed Collection.
So I index my GeoJSON coordinates:
Locations._ensureIndex({'geometry.coordinates':'2dsphere'});
It all works until I am using the $near operator to show markers beyond -90 to 90 longitude.
Latitude is bounding to -85 to 85, but longitude stops at -90 to 90 not -180 to 180 as expected.
So this works fine:
Leaflet map setView() to show the part of the map I want to place $near curson on:
window.map = L.map('map').setView([10,50],11);
Then the Server $near cursor - this works just as expected:
Meteor.publish('locations', function() {
return Locations.find({'geometry.coordinates':{ $near :
{ $geometry :
{ type : "Point" ,
coordinates: [10,50] } },
$maxDistance : 10000
}
});
});
But as soon as I adjust the coordinates to
[-33,151]
The leaflet map shows the location correctly, but the mongo $near throws an error:
$near requires a geojson point
Which is fair enough because that is an invalid point, but if I change it to:
[151,-33]
Then the Leaflet map doesn't show the correct location and the $near operator doesn't work.
Why are the geoJSON longitude coordinate limited between -90 to 90 ? and how do I show and use the $near operator on a location :
lat: -33 and long: 151
Solved it!
It had to do with a seemingly unrelated Leaflet.js way of adding a marker to the map.
So originally I used:
var location=L.marker(mark.geometry.coordinates).addTo(window.map);
Changing this to:
var location=L.geoJson(mark).addTo(window.map);
This meant that I could actually set the $near cursor to only show markers around my coordinates [-33,151]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With