我是mapbox
的新手。这似乎应该很简单但我似乎clearLayers()
无法成功layerGroup
。 ajax成功处理程序中的代码:
var _this = this,
len = data.places.length,
markers = [];
for (var i = 0; i < len; i++) {
var latlng = L.latLng(data.places[i].place_lat, data.places[i].place_lng);
var marker = L.marker(latlng)
.bindPopup('<h2><a href="http://website.com/place/' + data.places[i].place_id + '" target="_blank">' +
data.places[i].place_name + '</a></h2>')
.addTo(_this.map);
markers.push(marker);
}
if (_this.layerGroup) {
_this.layerGroup.clearLayers();
}
_this.layerGroup = new L.layerGroup(markers);
当第二次和第三次调用成功处理程序时,我想清除layerGroup(删除所有标记)并再次重用它。
编辑:我还尝试了这个找到图层但没有删除标记的替代clearLayers
if(_this.layerGroup){
_this.layerGroup.eachLayer(function(layer){
_this.layerGroup.removeLayer(layer);
})
}
编辑:来自下方的相关行: _this.map .removeLayer(图层); 这成功删除了标记,但它与我看过的示例不符。似乎我的layerGroup与我的地图没有关联,这是我需要解决的下一个问题。
if(_this.layerGroup){
_this.layerGroup.eachLayer(function(layer){
_this.map.removeLayer(layer);
})
}
答案 0 :(得分:0)
第一次玩mapbox所以犯了一个愚蠢的错误,但找到了解决方案:
var _this = this,
len = data.places.length,
markers = [];
if(_this.layerGroup){
_this.layerGroup.clearLayers();
}
_this.layerGroup = new L.LayerGroup().addTo(_this.map);
for (var i = 0; i < len; i++) {
var latlng = L.latLng( data.places[i].place_lat, data.places[i].place_lng);
var marker = L.marker(latlng)
.bindPopup('<h2><a href="http://website.com//place/' + data.places[i].place_id + '" target="_blank">' +
data.places[i].place_name + '</a></h2>')
.addTo(_this.layerGroup);
markers.push(marker);
}
layerGroup 应添加到地图,标记添加到 layerGroup 。我已经重构,要说清楚。我现在可以正确使用clearLayers。