Zum Inhalt springen
Der Guide für ein smartes Leben.
Sicherheit & Internet:Internet:Web-Entwicklung

Teil 2: Google Maps kreativ nutzen

Autor: Redaktion pcmagazin • 29.4.2009 • ca. 1:35 Min

Animierte Karte Die vorgestellte animierte Karte basiert allein auf der Maps-API. Sämtliche Daten befinden sich in unserem Beispiel aus Gründen der besseren Übersichtlichkeit im Script-Bereich. Die Karte soll sich entlang einer festgelegten Route bewegen. Die Punkte der Route erscheinen als O...

Animierte Karte

Die vorgestellte animierte Karte basiert allein auf der Maps-API. Sämtliche Daten befinden sich in unserem Beispiel aus Gründen der besseren Übersichtlichkeit im Script-Bereich. Die Karte soll sich entlang einer festgelegten Route bewegen.

Die Punkte der Route erscheinen als Ortsmarker auf der Karte und sind durch eine Linie miteinander verbunden. Sobald die Karte einen Punkt erreicht, wird in einem Infofenster ein Text angezeigt und die Animation kurz gestoppt.

Anschließend verschiebt sich die Karte weiter zum nächsten Punkt. Die Karte soll zusätzlich Bedienelemente zum Stoppen und Fortsetzen der Animation von jedem Marker aus bieten. Die Daten für die Route definieren Sie wie folgt:

var data = [
{ name: "Puttgarden, Fehmarn",
date: "7. Dezember",
lat:"54.5031", lng:"11.2292" }
];

Das Array ist zur Veranschaulichung gekürzt und enthält nur einen einzigen Eintrag. Die Bestandteile des Arrays bestehen aus Objekten, auf die über ein Label zugegriffen wird. Natürlich können Sie die Daten auch in einer XML-Datei speichern und dann mittels Ajax auslesen.

Mit name und date definieren Sie den Titel des Infofensters und den anzuzeigenden Text. Die Koordinaten, lat und lng, bezeichnen den Punkt, an dem auf der Karte ein Marker erscheinen soll. Die Variable data muss global sein, um sie von anderen Funktionen aus zu erreichen.

Karte laden

Um die Karte mit allen Elementen zu laden, ist eine längere Funktion notwendig. Hier die wichtigsten Anweisungen dazu:

function buildMap() {
map = new GMap2(document.
getElementById("mapdiv"));
map.setCenter(new GLatLng(54.5031,
11.2292), 8);
var icon = new GIcon();
icon.image = "blue-dot.png";
addIcon(icon);
for(var i = 0; i < data.length; i++)
{
points[i] = new GLatLng(parseFloat
(data[i].lat), parseFloat(data[i].lng));
gmarkers[i] = new GMarker(points[i],
icon);
var html ="<div class='infowindow'>"
+ "<strong>"+ data[i].name + "<\/strong><p>" + data[i].date + "<\/p><\/div>";
gmarkers[i].content = html;
gmarkers[i].nr = i;
addClickevent(gmarkers[i]);
map.addOverlay(gmarkers[i]);
}
var poly= new GPolyline(points,
"#003355", 3, .5);
map.addOverlay(poly);
gmarkers[0].openInfoWindowHtml
(gmarkers[0].content);
route = setTimeout("anim()", 3600);
}