[opengeodb] Google-Map-Integration

Martin Ritter daritter at rttr.de
Die Dez 18 15:34:16 CET 2007


Hallo zusammen,

Martin Trautmann schrieb:
> Übergebe ich hier eine ganze Liste an Markern? Vermutlich möchte ich 
> denen ja auch noch weitere Text-Info mitliefern.

nach meiner Erfahrung übergibt man mehrere mittels einer Schleife oder
man übergibt sie dem GMarkerManager, der dann Einträge auch nur bei
bestimmten Zoomstufen anzeigen kann und sie automatisch ausblendet wenn
sie nicht im sichtbaren Bereich sind.

Bei den Infofenstern hat es sich für mich bewährt, den html-Text dem
Marker als Eigenschaft zuzuweisen. Dann musst du noch einen
Eventlistener auf die Karte einbauen der bei Klick auf einen Marker dann
den zugehörigen Text als InfoWindow (diese Sprechblasen) anzeigt.

zum Beispiel:

var mouseClick = function (overlay,point) {
	if(overlay && overlay.myhtml){
		overlay.openInfoWindowHtml(overlay.myhtml);
	}
}
GEvent.addListener(map,'click',mouseClick)

var myplace = new GMarker(new GLatLng(48.1500, 11.5833));
myplace.myhtml = "<b>foo</b>";
map.addOverlay(myplace);

Möglicherweise geht es eleganter, aber ich bin so ganz glücklich.


> Folge dem Link.
> Warte, bis die Marker angezeigt werden.
> Klicke auf einen der Marker, so dass die "Sprechblase" angezeigt wird.
> Sieh dir dort die Fußzeile mit den blauen Befehlen an:
> 
>   _zoom move edit history tag delete alternate names perma link semantic 
> web rdf_
> 
> Klicke auf den zweiten Befehl davon: Move
> 
> Links erscheint der Text:
> move Haslach
>    1. point mouse to location (or gps)
>    2. save new coordinates
> 
> Klicke also auf der Karte an die passende Stelle auf der Karte. Es 
> erscheint ein neuer Marker und eine rote Linie zwischen altem und neuem 
> Marker, ausserdem eine Sprechblase mit der Möglichkeit, diese Korrrektur 
> abzuspeichern.

Etwas sehr ähnliches habe ich mal geschrieben, damit die Mitglieder
eines Forums selbst Positionen von Terminen o.ä. raussuchen können:
http://www.free-archers.de/maps/maptool.php

Man verschiebt den Marker an die entsprechende Stelle und kann ihn
anklicken um die Werte zu übernehmen. Normalerweise wird der Link
mittels Javascript aufgerufen und schreibt die Koordinaten in ein
Formularfeld des Elternfensters, daher passiert so nichts wenn man auf
übernehmen klickt.

Ist schon ein bisschen her das ich das gemacht hab, bei Interesse kann
ich aber gern das Script rauskramen.

> Obiges Beispiel http://www.geonames.org/maps/showOnMap?q=haslach zeigte 
> dir schon alle Suchergebnisse zu Haslach - entsprechend möchte ich alle 
> Suchergebnisse einer Anfrage anzeigen. Von daher braucht man z.B. auch 
> entweder einen Befehl, um die optimale Zoomstufe über die Resultate von 
> Google ermitteln zu lassen, oder man braucht eine eigene Umrechnung, um 
> aus den min/max-Werten der Resultate die Zoomstufe abzuleiten.

dafür gibt es die Funktion map.getBoundsZoomLevel(bounds),
wobei bounds die Max/Minwerte der Koordinaten sind. Danach kann man die
Zoomstufe mittels map.setZoom(level) setzen.

Grüße
	Martin Ritter