Leaflet: 删除或清除所有活动层而不通过特定层。

创建于 2015-02-18  ·  2评论  ·  资料来源: Leaflet/Leaflet

我没有找到清除或删除所有活动层的任何方法。 我认为应该有一个功能可以在不通过特定图层的情况下删除所有活动图层。 你怎么看?

为此,我找到了 2 个主要功能。
map.removeLayer(标记);
Markers.clearLayers();

但是我在使用这个功能时遇到了问题......实际上,它只工作一次,这意味着只删除一层标记,或者我做错了什么。

var map = new L.Map('map');

函数 getMarker(){
var heatMap = "";
如果(标记){
map.removeLayer(Membersx);
map.removeLayer(map._layers);
}
$.ajax({
类型:“帖子”,
网址:“app_lib->FOLDER['admin'].$this->router->class ?>/buscador",
数据类型:“json”,
数据:{layers:=$json_encode(layers);?>}
成功:功能(结果){
$.each(result, function(index, layer) {
var Markers = L.geoJson(layer.data ,{
pointToLayer:函数(特征,纬度){
if(feature.geometry.type == 'Point'){
返回 L.marker(latlng, {icon: L.ExtraMarkers.icon({ icon: feature.marker_icon, markerColor: feature.marker_color, shape: feature.marker_type, prefix: 'fa' }) })
}
},
onEachFeature: onEachFeature
});
map.addLayer(标记);
});
}

你能帮我解决这个问题吗...?

提前致谢。

最有用的评论

从地图中删除图层或从/清除其他分组图层的功能绰绰有余。 L.MapremoveLayer方法,它可以与eachLayer函数结合使用;

map.eachLayer(function (layer) {
    map.removeLayer(layer);
});

http://leafletjs.com/reference.html#map -eachlayer
http://leafletjs.com/reference.html#map -removelayer

如果您非常需要该功能,您可以轻松地将其包含在L.Map

L.Map.include({
  'clearLayers': function () {
    this.eachLayer(function (layer) {
      this.removeLayer(layer);
    }, this);
  }
});

原因(我在这里推测)它没有包含在L.Map是很少有人会需要它。 大多数实现将使用分组图层类型之一,如L.LayerGroupL.FeatureGroupL.GeoJSON来创建图层集合。 这些层确实包含clearLayers方法。

http://leafletjs.com/reference.html#layergroup -clearlayers

您需要的所有功能都已经存在,您只需要正确实现它。 如果您在实施方面遇到问题或需要帮助,那么发布到此问题跟踪器不是正确的做法。 如果您使用适当的渠道(例如在Leaflet 的 Google 群组中)或在 Stackoverflow 上使用标签发布问题,您将更快地获得反馈和帮助。

所有2条评论

从地图中删除图层或从/清除其他分组图层的功能绰绰有余。 L.MapremoveLayer方法,它可以与eachLayer函数结合使用;

map.eachLayer(function (layer) {
    map.removeLayer(layer);
});

http://leafletjs.com/reference.html#map -eachlayer
http://leafletjs.com/reference.html#map -removelayer

如果您非常需要该功能,您可以轻松地将其包含在L.Map

L.Map.include({
  'clearLayers': function () {
    this.eachLayer(function (layer) {
      this.removeLayer(layer);
    }, this);
  }
});

原因(我在这里推测)它没有包含在L.Map是很少有人会需要它。 大多数实现将使用分组图层类型之一,如L.LayerGroupL.FeatureGroupL.GeoJSON来创建图层集合。 这些层确实包含clearLayers方法。

http://leafletjs.com/reference.html#layergroup -clearlayers

您需要的所有功能都已经存在,您只需要正确实现它。 如果您在实施方面遇到问题或需要帮助,那么发布到此问题跟踪器不是正确的做法。 如果您使用适当的渠道(例如在Leaflet 的 Google 群组中)或在 Stackoverflow 上使用标签发布问题,您将更快地获得反馈和帮助。

^^:+1:
您也可以只记住您的 Markers 图层并将其删除。

此页面是否有帮助?
0 / 5 - 0 等级