Information Technology Reference
In-Depth Information
Wie in Abbildung 7.4 zu sehen ist, werden die jeweils letzten fünf ermittel-
ten Positionen auf der Straßenkarte von Google Maps markiert. Sobald der
Beobachter den dargestellten Bereich der Karte verlässt, wird die Karte um
den nächsten Punkt zentriert. Der Aufruf der Geolocation-API wird wieder in
window.onload ausgeführt und sieht folgendermaßen aus:
var watchID = navigator.geolocation.watchPosition(
moveMe, posError, {enableHighAccuracy: true}
);
Die eigentliche Arbeit findet in der Funktion moveMe() statt:
function moveMe(position) {
latlng = new google.maps.LatLng(
position.coords.latitude,
position.coords.longitude);
bounds = map.getBounds();
map.setZoom(16);
if (!bounds.contains(latlng)) {
map.setCenter(latlng);
}
if (marker.length >= maxMarkers) {
m = marker.shift();
if (m) {
m.setMap();
}
}
marker.push(new google.maps.Marker({
position: latlng, map: map,
title: position.coords.accuracy+"m lat: "
+position.coords.latitude+" lon: "+
position.coords.longitude
}));
}
Die Variable latlng wird als LatLng -Objekt aus der Google Maps API erzeugt,
wobei diesem Objekt die aktuellen Koordinaten übergeben werden. Soll-
te die aktuelle Position außerhalb des dargestellten Bereichs sein ( !bounds
.contains(latlng) ), wird die Karte über dem aktuellen Punkt neu zentriert. Wie
das Array marker wurde auch die Variable maxMarkers am Anfang des Scripts
global definiert und mit dem Wert 5 belegt. Enthält das Array marker mehr als
fünf Elemente, so wird das erste Element mit der shift -Funktion aus dem Ar-
ray entfernt und anschließend durch den Aufruf von setMap() ohne weitere Pa-
Search WWH ::




Custom Search