HTML and CSS Reference
In-Depth Information
2.5.7 PositionOptions genauer betrachtet
Als dritter Parameter kann sowohl an getCurrentPosition als auch an
watchPosition ein Objekt übergeben werden, das die vom Entwickler erwartete Posi-
tion genauer definiert. Die Kombination von enableHighAccuracy , timeout und
maximumAge kann unter anderem dazu verwendet werden, eine aktuelle Positionierung
zu erzwingen. Schauen wir uns das anhand eines Beispiels an;
// One Shot Anfrage, schlechte Idee ...
var options {timeout:0, maximumAge:0, enableHighAccuracy:true};
navigator.geolocation.getCurrentPosition(showMap, handleError, options);
Eine so durchgeführte Anfrage an die Geolocation-API wird mit höchster Wahrschein-
lichkeit fehlschlagen. timeout 0 gibt an, dass das Ergebnis der Positionierung sofort
verfügbar sein soll. Dies ist jedoch nur dann möglich, wenn kein neuer Positionierungs-
prozess gestartet wird, denn egal, welche Methode benutzt wird, ein timeout 0 ist nicht
machbar. Da gleichzeitig maximumAge 0 und enableHighAccuracy true angegeben
werden, werden jedoch explizit frühere Ergebnisse abgelehnt, und die genaueste und
damit zeitintensivste Methode wird ausgewählt.
Äußerst vielversprechend ist dagegen dieses Beispiel:
var options {timeout:30000, maximumAge:0, enableHighAccuracy:false};
navigator.geolocation.getCurrentPosition(showMap, handleError, options);
Das Gerät wird in diesem Fall - sofern unterstützt - die Positionsbestimmung per IP-
Adresse oder vorhandenen WiFi-Netzwerken auswählen, da enableHighAccuracy
false ist. Durch maximumAge 0 wird ein neuer Bestimmungsprozess ausgelöst, der mit
einem timeout 30000 und somit 30 Sekunden jedoch üppig bemessen ist.
Folglich sieht ein Beispiel für eine möglichst exakte und aktuelle Position unter Inkauf-
nahme einer längeren Bestimmungsdauer so aus:
var options {timeout:60000, maximumAge:0, enableHighAccuracy:true};
navigator.geolocation.getCurrentPosition(showMap, handleError, options);
Es können natürlich auch mehrere Anfragen zeitlich kombiniert werden. Beispielsweise
kann eine Webapplikation zunächst eine Anfrage durchführen, die in aller Regel schnell,
jedoch auch ungenau beantwortet wird. Sobald das erste Ergebnis vorliegt, kann eine
zweite, genauere Anfrage gestartet werden, die dann im Hintergrund arbeitet. Der
Benutzer interagiert dadurch direkt mit der Applikation, seine Position wird nach und
nach genauer definiert. Ein weiteres Beispiel demonstriert das:
...
var $i {};
$i.vars {first:true};
//wird aufgerufen, sobald DOM ready
$i.init function()
{
if (Modernizr.geolocation)
{
Search WWH ::




Custom Search