【问题标题】:Removing layers from a leaflet map从传单地图中删除图层
【发布时间】:2015-07-13 14:48:08
【问题描述】:

我正在向我的传单地图对象添加具有各种不透明度的多个图层,如下所示:

 var TopoLayer = L.esri.dynamicMapLayer("https://gis.in.gov/arcgis/rest/services/Imagery_Basemap/MapServer", {
                        opacity: 0.8,
                        // Tell the map to use a loading control

                        useCors: false
                    }).addTo(map);
   var EPSLayer = L.esri.dynamicMapLayer("https://gis.in.gov/arcgis/rest/services/DOT/EPS_Map_2015/MapServer", {
                    opacity: 1,
                    // Tell the map to use a loading control

                    useCors: false
                }).addTo(map);

现在,当用户单击复选框时,我想删除图层或将其重新添加。我试过了

                    map.removeLayer("EPSLayer");
                    map.removeLayer("tiles");

但是,这并没有解决问题。任何可以提供帮助的想法或指示将不胜感激。

*** 更新我创建了一个小提琴来显示这个问题:

https://jsfiddle.net/31gmr4ss/3/

想法是单击树形图标以显示区域视图,然后在再次单击时切换到地图视图。

单击树形图标时它似乎可以工作,但是缩放地图时会出现 arial 视图。

正如@Fabrizio 所建议的,remove 不应传递字符串值,但仅传递变量名会导致映射根本不起作用。

谢谢

【问题讨论】:

    标签: javascript leaflet


    【解决方案1】:

    不要在函数中使用字符串:

    map.removeLayer(EPSLayer);
    map.removeLayer(TopoLayer);
    

    取决于您要删除的图层。

    【讨论】:

    • Fabrizio,我在文档中看到不使用字符串。但是,当我按照您的建议更改代码时,我收到错误 JavaScript runtime error: Unable to get property '_leaflet_id' of undefined or null reference 知道为什么吗?
    • 您使用的是什么版本的传单?
    • 0.7.3 我也在使用 Leaflet geocoder version 1.0.0-rc.4
    • 也许还添加更多代码?特别是触发 removeLayer() 函数的那一次?
    猜你喜欢
    • 2017-07-10
    • 1970-01-01
    • 2015-04-17
    • 2016-12-18
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多