2016-04-21 14 views
0

Ich habe eine Schaltfläche, mit der ich eine Kartenebene ein- und ausschalten kann. Klicken Sie einmal und die Ebene fügt der Karte hinzu, klicken Sie erneut und es geht weg (und so weiter). Momentan funktioniert meine Schaltfläche nur beim ersten Klick und keiner danach.Leaflet toggle buttons funktionieren nur beim ersten Klick

Ich denke, das hat damit zu tun, dass es als eine if/else-Anweisung geschrieben wird. Eine Bedingung ist erfüllt, die Funktion endet, und damit ist Schluss.

Auf der Suche nach Anleitung ... Wie ändere ich meinen Code, um dies zu einer funktionalen Umschaltfläche zu machen?

Meine Taste:

<button id="buttonA" onclick=="onoff();">Button A</button> 

Dann in einer Funktion $.getJSON("mydata.json", function(data) {...}); Ich habe folgendes:

function onoff(){ 
    currentvalue = document.getElementById('onoff').value; 
} 


document.getElementById("buttonA").addEventListener("click", function(){ 
    if (currentvalue = "Off"){ 
     LayerA.addTo(map); 
     document.getElementById("onoff").value="On"; 
    } 
    else{ 
     map.removeLayer(LayerA); 
     document.getElementById("onoff").value="Off"; 
    } 
}); 

Antwort

1

ändern if (currentvalue = "Off") zu if (currentvalue == "Off")

EDITED: Versuchen auf diese Weise:

B utton:

<button id="buttonA" onclick="onoff();">Button A</button> 

und js:

function onoff(){ 
     currentvalue = document.getElementById('onoff').value; 

     if (currentvalue == "Off"){ 
     LayerA.addTo(map); 
     document.getElementById("onoff").value="On"; 
     } 
     else{ 
     map.removeLayer(LayerA); 
     document.getElementById("onoff").value="Off"; 
     } 
    } 
+0

Guter Fang (I oben korrigiert)! Leider habe ich immer noch das gleiche Problem. – user2192778

+0

Ich habe meine Antwort bearbeitet, check out – Remi

+1

Immer noch nicht für mich (ich bin mir nicht sicher warum, das schien wie eine gute Lösung). Ich fand eine Lösung, aber: 'document.getElementById ("buttonA") addEventListener ("Klick", function() { if (map.hasLayer (LayerA)) { map.removeLayer (LayerA); } . else { LayerA.addTo (map); } }); 'Es stellt sich heraus, dass die Leaflet-Bibliothek eine Funktion' hasLayer' besitzt, die prüft, ob die Map einen bestimmten Layer hat. Vielen Dank. – user2192778