Javascript 尝试使用Mapbox删除图层组中的标记

Javascript 尝试使用Mapbox删除图层组中的标记,javascript,leaflet,mapbox,Javascript,Leaflet,Mapbox,我不熟悉mapbox。这看起来应该很简单,但我似乎无法在我的layerGroup上成功地clearLayers()。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_

我不熟悉
mapbox
。这看起来应该很简单,但我似乎无法在我的
layerGroup
上成功地
clearLayers()
。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);
编辑:下面的相关行:\u this.map.removeLayer(层); 这成功地删除了标记,但与我看到的示例不匹配。似乎我的图层组与我的地图没有关联,这是我接下来需要解决的问题

            if(_this.layerGroup){
                _this.layerGroup.eachLayer(function(layer){
                    _this.map.removeLayer(layer);
                })
            }

第一次玩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);
            }
var\u this=this,
len=data.places.length,
标记=[];
if(_this.layerGroup){
_this.layerGroup.clearLayers();
}
_this.layerGroup=新的L.layerGroup().addTo(_this.map);
对于(变量i=0;i

应将图层组添加到地图中,并将标记添加到图层组中。我已经进行了重构以使其清晰。我现在可以正确使用clearLayers了。

\u this=this
移到成功处理程序之外。谢谢。在侦听表单上的提交处理程序时,我正在绑定到适当的作用域:$('#setCity')。在('submit',this.handleMapboxSearch.bind(this));刚刚意识到这与ajax处理程序无关。。。在handleMapboxSearch中,我设置了我的ajax请求和成功handlerI还将使用FeatureGroup而不是LayerGroup,因为FeatureGroup扩展了LayerGroup并提供了鼠标事件
            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);
            }