[GIS] Plotting multiple markers on Leaflet map

latitude longitudeleafletmarkers

If I have a object containing lats and longs how can i plot them in Leaflet using the marker constructor I tried looping through them

for(key in obj){
            var val = obj[key];
            var markers = new L.Marker([val.lat, val.long]);
            map.addLayer(markers);
        }

but its not showing up in the map

var obj ={
 0 : {
        lat: 15.606562000000000
        long: 32.513681000000000
    },
1 : {
        lat: -12.09137
        long: 34.7182
    }
}

Best Answer

No, you're not using the L.Marker constructor.

Constructor: L.Marker( <LatLng> latlng, <Marker options> options? )

And a L.LatLng is:

Constructor: L.LatLng( <Number> latitude, <Number> longitude)

So:

var markers = new L.Marker(new L.LatLng(val.lat, val.long));

Additional JS tips:

  1. markers should be marker, as it is a reference to a single marker.
  2. If your indices are incremental numbers, you should consider making obj an array, and use a for loop instead of a for-in. If not, use hasOwnProperty to avoid nasty surprises.