下面的代码:
map: function (events) {
var arrayOfLatLngs = [];
var _this = this;
// setup a marker group
var markers = L.markerClusterGroup();
events.forEach(function (event) {
// setup the bounds
arrayOfLatLngs.push(event.location);
// create the marker
var marker = L.marker([event.location.lat, event.location.lng]);
marker.bindPopup(View(event));
// add marker
markers.addLayer(marker);
});
// add the group to the map
// for more see https://github.com/Leaflet/Leaflet.markercluster
this.map.addLayer(markers);
var bounds = new L.LatLngBounds(arrayOfLatLngs);
this.map.fitBounds(bounds);
this.map.invalidateSize();
}
我最初调用这个函数,它会将所有events
添加到带有标记和聚类的Map中。
在稍后的时候,我传入一些其他事件,Map将放大到新事件,但旧事件仍在Map上。
我试过this.map.removeLayer(markers);
和其他一些东西,但我不能让旧的标记消失
6条答案
按热度按时间a5g8bdjr1#
如果你想移除你组中的所有当前层(标记),你可以使用
L.markerClusterGroup()
的clearLayers
方法。你的引用被称为markers
,所以你需要调用:qf9go6mv2#
你正在丢失标记引用,因为它是用var设置的。请尝试将引用保存为'this'。
然后稍后当您需要删除标记时运行:
或者,您可以将集群保存到'this',而不是保存对每个标记的每个引用。
4smxwvx53#
ecbunoof4#
8hhllhi25#
您可以清除所有标记而不保存它
来自https://leafletjs.com/reference-1.0.3.html#map-event
slsn1g296#
我使用了来自beije和Prayitno Ashuri的两个最佳答案的组合。
将标记保存到“this”,以便我们稍后可以引用它。
然后去掉标记