Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between leaflet Marker and mapbox featureLayer

Tags:

leaflet

mapbox

I understood that I can use the general Leaflet layer, and the more advanced map-box featureLayer, that provides useful functions as the filter. However, I don't understand the difference between

marker = L.Marker (new L.LatLng(lat, lng), 
        {
            icon: L.mapbox.marker.icon(
                                {'marker-color': 'fc4353'
                                 'marker-size': 'large'
                                }),
            title: name,
        });
map.addLayer(marker);

and

     var poijson =  {
            "type": "Feature",
            "geometry": {
              "type": "Point",
              "coordinates": [lng, lat]
            },
            "properties": {
              "title": poi.name,
              "marker-color": "#fc4353",
              "marker-size": "large"
            }
          }; 
     map.featureLayer.setGeoJSON(geojson);

Is it just the same?

[UPDATE]

Moreover, if I had many markers, should I add a new layer for each marker? It seems not a good thing for performance.. For instance, If I do:

 var pois; //loaded with pois info
 var geojson=[]; //will contain geojson data
 for (p=0; p< pois.length; p++)
        {
         var poi = pois[p];
         var poijson =  
           {
            "type": "Feature",
            "geometry": 
             {
              "type": "Point",
              "coordinates": [poi.lng, poi.lat]
             }
           }; 
         geojson.push(poijson); 
        }
 map.featureLayer.setGeoJSON(geojson);

Does it will create many layers for each poi, or just one layer with all the markers?

thank you

like image 503
DeLac Avatar asked Feb 07 '26 20:02

DeLac


1 Answers

When you add a marker to a Leaflet map via map.addLayer(marker);, the marker is added to the 'leaflet-maker-pane'. The markers are plain images/icons.

You can use a geoJSON layer to draw GIS features: points, lines, polygons, etc. See here: http://leafletjs.com/examples/geojson.html

Mapbox's featureLayers is just an extension to Leaflet's geoJSONLayer

To add multiple markers, call addMarker multiple times. Leaflet will create a new layer for each of the markers. Each marker will be added as an image element to the leaflet-marker-pane div: http://bl.ocks.org/d3noob/9150014

Updated response:

If you add a GeoJSON layer with multiple features, Leaflet will create separate layer for each of the features. You can inspect the layers of the map by calling map._layers after adding the GeoJSON Layer.

marker.addTo(map) and map.addLayer(marker) are doing the same thing. Here's the addTo function taken from the source

addTo: function (map) {
    map.addLayer(this);
    return this;
},
like image 59
kmandov Avatar answered Feb 12 '26 14:02

kmandov



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!