![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
|
ich lese eine XML-Datei mittels request.responseXML aus, was auch soweit funktioniert. In XML wird als Attribut "zoomlevel" angegeben: marker lat="43.51647068704001" lng="16.24980926513672" icontype="ort" zoomlevel="10" Ich möchte gewisse Marker, auf Grund der Überschaubarkeit, nur ab einer gewissen Zoomtiefe anzeigen lassen. Die Schleife sieht wie folgt aus: for (var i = 0; i < markers.length; i++) { // Umwandeln der Attributen von Marker-Element in ausflugsziele.xml in entsprechende Variable var lat = parseFloat(markers[i].getAttribute("lat")); var lng = parseFloat(markers[i].getAttribute("lng")); var zoomlevel = parseFloat(markers[i].getAttribute("zoomlevel")); // Erzeugen von Markers GEvent.addListener(map, "zoomend", function() { if (+map.getZoom() > zoomlevel) { var marker = createMarker(point,label,html,icontype,zoomlevel); map.addOverlay(marker); } } ); } Leider funktioniert es nicht. Es passiert einfach nichts. Kann mir jemand sagen wo mein Denkfehler ist? |
#3
| |||
| |||
|
|
Ich habe es mal unter http://www.mljet24.de/reisefuehrer/reiseziele/ online gestellt und mit alert() die Variablen ausgegeben. Vielleicht kann mir jetzt jemand besser helfen. Das Problem scheint wohl die Schleife zu sein. Ich bekomme nur den letzten Marker aus der XML-Datei angezeigt. Auch beim Rauszoomen wird der Marker nicht mehr gelöscht. Ich bin wirklich für jeden Lösungsansatz dankbar. |
#4
| |||
| |||
|
|
Ich habe es mal unter http://www.mljet24.de/reisefuehrer/reiseziele/ online gestellt und mit alert() die Variablen ausgegeben. Vielleicht kann mir jetzt jemand besser helfen. Das Problem scheint wohl die Schleife zu sein. Ich bekomme nur den letzten Marker aus der XML-Datei angezeigt. Auch beim Rauszoomen wird der Marker nicht mehr gelöscht. Ich bin wirklich für jeden Lösungsansatz dankbar. Die lokale, anonyme Funktion für zoomend bildet eine "closure" und wird erst später aufgerufen, wenn das "zoomend"-Ereignis auftritt. Die Variable i hat dann immer den Wert 2 nach dem Ende der Schleife. Du willst wohl eher zuerst die "marker"-Daten aus responseXML auslesen und dann später, wenn das Ereignis auftritt, die gewünschten Marker in der Karte darstellen. Daher solltest du in onreadystatechange nur die Daten auslesen, z.b. in einem Array ablegen, und dann den zoomend-Handler auf eine Funktion setzen, die das Array durchläuft und die gewünschten Marker setzt. |
![]() |
| Thread Tools | |
| Display Modes | |
| |