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-