Geolocation-API-Demo: Ortswetter
Fast alle aktuellen Browser unterstützen mittlerweile Geolocation. Dadurch sind Webanwendungen möglich, die mit der Position des Nutzers arbeiten. Als Beispielanwendung habe ich eine kleine Website programmiert, die anzeigt, in welcher Stadt man sich befindet, und wie das Wetter dort gerade ist.
→ Zur Demo ←
Dies funktioniert folgendermaßen:
- Es wird versucht, die Position vom Browser zu bekommen. In fast allen Browsern muss der Benutzer dazu seine Bestätigung erteilen. Die Positionierung selbst ist Browser- bzw. Betriebssystemabhängig. So kann auf einem mobilen Browser möglicherweise GPS zuhilfe genommen werden, während auf einem normalen PC die Position z.B. durch WLANs in der Nähe oder einfach durch die IP-Adresse bestimmt wird. Zugegriffen wird auf die Position über JavaScript. Auf eine zusätzliche Implementierung mithilfe von Google Gears für ältere Browser habe ich verzichtet.
- Mithilfe der Google Maps API werden die zuvor festgestellten Koordinaten in einen Städtenamen übersetzt. Auch dies funktioniert komplett mit JavaScript.
- Die Wetterinformationen stammen von der inoffiziellen Google Weather API. Zuerst wird versucht, diese mit den Koordinaten zu füttern. Dies klappt leider nicht immer, da die API undokumentiert ist. In diesem Fall wird versucht, das Wetter durch Übermittlung des festgestellten Städtenamens herauszufinden. Die eigentliche Abfrage geschieht in einem PHP-Script mithilfe von cURL – dieses wiederum wird per AJAX ausgelesen.
Probleme & Lösungen
- Kommt die Meldung „Ihr Aufenthaltsort konnte leider nicht festgestellt werden.“, wurde zu lange gezögert, die Lokalisierungsanfrage zu erlauben. Ein Neuladen und anschließend schnelleres Erlauben sollte helfen.
- Safari hat einen Bug, wenn zum wiederholten Male die Position mithilfe der Geolocation API erfragt wird. Ein Neustart von Safari hilft.
- Der Internet Explorer wird nicht unterstützt. Am zuverlässigsten funktioniert die Geolocation API derzeit mit Chrome.
- Kommt die Meldung „Sorry, dein Browser unterstützt leider keine Geolokalisierung.“, obwohl ein aktueller Browser eingesetzt wird, ist möglicherweise Geolocating oder JavaScript deaktiviert.
Sonstige Probleme bitte in die Kommentare (wenn möglich, mit Auszug der JavaScript-Fehlerkonsole).