Leaflet: как я могу отобразить маркер или легенду только на одном слое? - PullRequest
1 голос
/ 06 марта 2020

Я создал карту листовки с различными слоями, которые выглядят так:

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

Я перепробовал все, что видел здесь, чтобы сделать его видимым только на одном слое, но потом все они исчезают ...
У меня есть та же проблема с маркером, который я использую, который я также хочу показать только на одном из упомянутых слоев ...
Может кто-нибудь сказать мне, как я могу сделать так, чтобы легенда и маркер появлялись только при нажатии на один слой?

1 Ответ

1 голос
/ 06 марта 2020

Чтобы маркер 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);
   }
});
...