HighDots Forums  

Google Maps - Marker nur bei gewissem Zoomlevel anzeigen

Javascript (German) Programmiersprache JavaScript. (de.comp.lang.javascript)


Discuss Google Maps - Marker nur bei gewissem Zoomlevel anzeigen in the Javascript (German) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Rudi Klingenberg
 
Posts: n/a

Default Google Maps - Marker nur bei gewissem Zoomlevel anzeigen - 10-05-2007 , 02:12 PM






Hallo allerseits,

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?

Gruß Rudi

Reply With Quote
  #2  
Old   
Rudi Klingenberg
 
Posts: n/a

Default Re: Google Maps - Marker nur bei gewissem Zoomlevel anzeigen - 10-14-2007 , 10:12 AM






Quote:
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?
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.

Einen schönen Sonntag.

Gruss Rudi


Reply With Quote
  #3  
Old   
Martin Honnen
 
Posts: n/a

Default Re: Google Maps - Marker nur bei gewissem Zoomlevel anzeigen - 10-14-2007 , 11:24 AM



Rudi Klingenberg wrote:

Quote:
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.



--

Martin Honnen
http://JavaScript.FAQTs.com/


Reply With Quote
  #4  
Old   
Rudi Klingenberg
 
Posts: n/a

Default Re: Google Maps - Marker nur bei gewissem Zoomlevel anzeigen - 10-16-2007 , 07:03 AM



Hallo Martin,

Quote:
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.
Vielen Dank für deine Hilfe. Alles komplizierter als ich gedacht habe,
aber ein gutes Beispiel habe ich hier gefunden:

http://econym.googlepages.com/example_markermanager.htm

Gruß Rudi


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.