小册子标记与地图框特征层之间的区别

时间:2015-04-26 18:33:25

标签: leaflet mapbox

我知道我可以使用一般的Leaflet layer和更高级的地图框featureLayer,它提供了有用的功能作为过滤器。 但是,我不明白

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

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

它是一样的吗?

[UPDATE]

此外,如果我有很多标记,我应该为每个标记添加一个新图层吗?对于表现来说似乎不是一件好事。 例如,如果我这样做:

 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);

是为每个poi创建多个图层,还是只为一个图层创建所有标记?

谢谢

1 个答案:

答案 0 :(得分:3)

当您通过map.addLayer(marker);向Leaflet地图添加标记时,该标记会添加到&#39; leaflet-maker-pane&#39;中。标记是普通图像/图标。

您可以使用geoJSON图层绘制GIS要素:点,线,多边形等。 见这里:http://leafletjs.com/examples/geojson.html

Mapbox的featureLayers只是Leaflet geoJSONLayer的扩展

要添加多个标记,请多次调用addMarker。 Leaflet将为每个标记创建一个新图层。每个标记都将作为图像元素添加到leaflet-marker-pane div: http://bl.ocks.org/d3noob/9150014

更新回复:

如果添加具有多个要素的GeoJSON图层,Leaflet将为每个要素创建单独的图层。您可以在添加GeoJSON图层后调用map._layers来检查地图图层。

marker.addTo(map)map.addLayer(marker)正在做同样的事情。 以下是the source

中的addTo函数
addTo: function (map) {
    map.addLayer(this);
    return this;
},