尝试使用Mapbox删除layerGroup中的标记

时间:2014-03-12 07:17:04

标签: javascript leaflet mapbox

我是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);
                })
            }

1 个答案:

答案 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。