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