首页 > 解决方案 > 传单:如何仅在一层上显示标记或图例?

问题描述

我制作了一张带有不同图层的传单地图,如下所示:

L.easyButton('<span class ="buttons">Example </span>', function (btn, map) {
    if (map.hasLayer(example1)) {
        map.removeLayer(example1);
    };
    if (map.hasLayer(example2)) {
        map.removeLayer(example2);
    };
    if (map.hasLayer(example3)) {
        map.removeLayer(drittpa2017zweit);
    }
    map.addLayer(example4);
}, 'FirstExample').addTo(map);

依此类推...
我声明了一个图例,我只想在一层打开时使用它,现在它一直出现,我认为正因为如此

legendwahlbeteiligung.addTo(map);

我尝试了在这里看到的所有内容,使其仅在一层上可见,但随后它们都消失了……
我使用的标记有同样的问题,我也只想在提到的一层上显示它……
谁能告诉我如何使图例和标记仅在单击一层时出现?

标签: javascriptleafletlegendmarker

解决方案


要使标记在图层可见myMarker时出现并在图层example1不可见时消失:

var myMarker = L.marker(...);

example1.on('add', function(e) {
   if (! map.hasLayer(myMarker)) {
       myMarker.addTo(map);
   }
});

example1.on('remove', function(e) {
   if (map.hasLayer(myMarker)) {
       myMarker.removeFrom(map);
   }
});

推荐阅读