我想用" new"更新我的地图标记。因此,首先重置所有可见标记。我会通过Ajax的geoJSON读取我的标记:
$.ajax({
url: 'dashboard/geoJSON',
dataType: 'json',
async: false,
type: 'GET',
success: function(geojson) {
var locations = L.mapbox.featureLayer().addTo(map);
locations.setGeoJSON(geojson);
// reset?
}
});
我试过了:
L.mapbox.featureLayer().clearLayers();
要在添加所有新标记之前重置,但它无法正常工作。有什么想法吗?
答案 0 :(得分:1)
我找到了一个解决方案:
success: function(geojson) {
markers.forEach(function(entry) {
map.removeLayer(entry);
});
locations = L.mapbox.featureLayer().addTo(map);
locations.on('layeradd', function (e) {
var marker = e.layer;
markers.push(marker);
});
locations.setGeoJSON(geojson);
如此错误地使用'layeradd'方法手动推送我的数组,然后在设置新数组之前删除所有数组。
答案 1 :(得分:0)
您应该清除map
对象中的图层,而不是featureLayers
,其中layer
变量是包含所有标记的图层:
map.removeLayer(layer);

将全局L
对象视为'生成器'各种各样的。您可以将其链接以创建地图,图层,标记等。您可以通过链接地图将 附加到特定地图。