我知道我可以使用一般的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
创建多个图层,还是只为一个图层创建所有标记?
谢谢
答案 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;
},