2013-03-09 3 views
5

Ich versuche, Google Maps mit Hilfe von Kontrollkästchen Token-, Cloud- und Wetter-Layer hinzuzufügen. Wenn ich dies jedoch versuche, verschwinden alle Ebenen, unabhängig davon, ob die Kontrollkästchen aktiviert oder deaktiviert sind. Ich habe noch nie so etwas in Javascript gemacht und ich bin wirklich neu in Javascript, also habe ich keine Ahnung, was ich falsch mache. Hier ist mein Code, jede Hilfe wird großartig!Wie können Google Maps-Layer mit Kontrollkästchen aktiviert und deaktiviert werden?

Javascript:

 function check() 
    { 
     var weatherLayer = new google.maps.weather.WeatherLayer({ 
     temperatureUnits: google.maps.weather.TemperatureUnit.FAHRENHEIT 
     }); 
     var trafficLayer = new google.maps.TrafficLayer(); 
     var cloudLayer = new google.maps.weather.CloudLayer(); 

     if(document.getElementById('weather').checked) 

     {weatherLayer.setMap(map);} 

     else if(!document.getElementById('weather').checked) 

     {weatherLayer.setMap(map);} 

     cloudLayer.setMap(map); 

     trafficLayer.setMap(map); 
    } 

Html

 <label><input type="checkbox" id="weather" checked="checked" onclick="check()" />Weather</label> 
     <label><input type="checkbox" id="clouds" onclick="check()" />Clouds</label> 
     <label><input type="checkbox" id="traffic" onclick="check()" />Traffic</label> 
+0

Ihr sonst, wenn lesen sollte als weatherLayer.setMap (null) – Rafe

+0

Oh ja, ich habe das geändert Noch hat nicht funktioniert – kduan

Antwort

6
  1. die Wetterlage zu verwenden, müssen Sie die library
  2. zu aktivieren und deaktivieren Schichten im globalen Bereich (wo HTML-Klick schließen Listener ausführen), Ihre Karte muss global sein (definieren Sie sie außerhalb von Funktionen, initialisieren Sie sie jedoch im onload-Ereignis)
  3. Sie müssen auch Ihre Schichten im globalen Geltungsbereich definieren.
  4. eine Schicht, die Verwendung setMap (Karte), angezeigt werden es setMap (null)

geändert "check" Funktion nutzen zu verbergen:

function check() 
{ 

    if(document.getElementById('weather').checked) 

     {weatherLayer.setMap(map);} 

    else 

     {weatherLayer.setMap(null);} 

    if(document.getElementById('clouds').checked) 

     {cloudLayer.setMap(map);} 

    else 

     {cloudLayer.setMap(null);} 

    if(document.getElementById('traffic').checked) 

     {trafficLayer.setMap(map);} 

    else 

     {trafficLayer.setMap(null);} 
} 

working example

+0

Danke! Ich habe immer noch Probleme mit der Karte. Wenn ich die Kontrollkästchen aktiviert oder deaktiviert in den Code, läuft es gut, aber wenn ich das Kontrollkästchen in einem Browser trifft, ändert sich nichts. Weißt du, warum das passiert? Vielen Dank! – kduan

+1

Sieh dir mein [funktionierendes Beispiel] (http://www.geocodezip.com/v3_simpleMap_layers.html) an, das funktioniert (zumindest in Chrome). – geocodezip

+0

Hier ist eine vorherige Frage, die sich mit der Überprüfung der Änderung der Kontrollkästchen befasst http://stackoverflow.com/questions/4471401/getting-value-of-html-checkbox-from-onclick-onchange-events auch ich denke, ich erinnere mich zu sehen dass die Cloud-Abdeckung nicht unter einer bestimmten Zoomstufe angezeigt wird? – Rafe

Verwandte Themen