xyz: geolocation mit HTML5

Moin,
ich nutze die GPS-Positionsbestimmung mittels der geolocation-API mit dem Handy (Galaxy S2) .
Leider ist die Dokumentation insbesondere der technischen Details im Zusammenspiel mit dem jeweiligen Handy-Typ nicht besonders aussagekräftig.
Stück für Stück läuft das aber nun fast so, wie ich es erwarte.
Eine Sache ärgert mich dennoch weiterhin: ich muss die Seite immer neu laden, um den GPS-Empfänger zu aktivieren, dann muss ich außerdem drauf achten, dass ich nicht versehentlich die Dauergenehmigung zur Standortbestimmung erteile, weil dann der Standort nur über Mobilfunknetz bzw. WLAN ermittelt wird.
Zur Veranschaulichung hier eine Testseite:
http://www.easyofficeweb.de/apps/GEOLOCATION.htm

  • Klick auf eine Tabellenzeile außer 1. öffnet einen Maps-Auschnitt anhand der hinterlegten Koordinaten
  • Klick auf das dann sichtbare Navi-Symbol links oben ruft dann die Geolocation-API auf.
  • der ermittelte Standort wird dann zusammen mit dem gespeicherten auf der Karte angezeigt.

Um GPS-Koordinaten zu erhalten, muss ich darauf verzichten, dauerhaft den Standortzugriff zuzulassen, nur dann sehe ich den GPS-Empfänger fixen. Außerdem muss ich das Fixing abwarten, bevor ich zustimme. Will ich erneut den Standort bestimmen, habe aber bereits zugestimmt, werden sogleich andere Standortquellen genutzt, ohne den GPS-Empfänger zu aktivieren, ich müsste also die Seite erst komplett neu laden für eine weitere GPS-Abfrage.

Da ich von Geräteseite keine weiteren Möglichkeiten sehe, diese beschriebene Umständlichkeit zu umgehen, hoffe ich auf Hilfe hier. (im übrigen verweist Google auf den Gerätehersteller und der Gerätehersteller auf den Anbieter der API, also Google!)

Gruß Tom

  1. Meine Herren,

    ich nutze die GPS-Positionsbestimmung mittels der geolocation-API mit dem Handy (Galaxy S2) .

    Und welcher Browser?

    Leider ist die Dokumentation insbesondere der technischen Details im Zusammenspiel mit dem jeweiligen Handy-Typ nicht besonders aussagekräftig.

    Von welcher Dokumentation sprichst du? Die mir bekannte geolaction-API wird vom w3c entwickelt und ist erstmal völlig Device-unabhängig.

    Stück für Stück läuft das aber nun fast so, wie ich es erwarte.

    Wie erwartest du es denn?

    Eine Sache ärgert mich dennoch weiterhin: ich muss die Seite immer neu laden, um den GPS-Empfänger zu aktivieren, dann muss ich außerdem drauf achten, dass ich nicht versehentlich die Dauergenehmigung zur Standortbestimmung erteile, weil dann der Standort nur über Mobilfunknetz bzw. WLAN ermittelt wird.

    Das ist ein Implementations-Detail und hat nichts mit der API ansich zu tun.

    "The API itself is agnostic of the underlying location information sources" [w3c Spec]

    Sind die Werte denn völlig undbrauchbar? Dann würde ich es als Bug im Issue-Tracker des von dir benutzten Browser listen.

    Hast du es mal mit watchPosition() versucht?

    --
    Hey Girl,
    i wish you were asynchronous, so you'd give me a callback.
    1. Hier also die Beschreibung meines Vorgehens:

      Erst einmal in den Geräte-Einstellungen die 2 Haken setzen:
      ![](http://www.easyofficeweb.de/S2 Einstell1.jpg)

      dann in den Einstellungen des Browsers unter ERWEITERT-STANDORT einen Haken setzen:
      ![](http://www.easyofficeweb.de/S2 Einstell2.jpg)

      Nun können GPS-Signale empfangen werden (GPS einschalten nicht vergessen). Dazu Klick auf GPS-Symbol oben links, bei der Beispiel-Website ist das analog zu machen) Bei erstmaligem Aufruf kommt die Abfrage, ob zugelassen werden soll. Man achte auf das blinkende GPS-Symbol in der Statusleiste des Handys, das den Fix-Prozeß anzeigt.
      Ein geschlagenes Viertel-Jahr habe ich sofort die Abfrage bestätigt, daraufhin verschwand das Symbol wieder aus der Statuszeile und ich bekam nur einen Wert über WLAN und Mobilfunknetz. Nur durch Zufall kam ich drauf, nicht sofort zu bestätigen, sondern das Fixing abzuwarten, bis das Symbol also nicht mehr blinkt und dann erst zu bestätigen. In keiner Dokumentation ist das beschrieben worden. Ich wundere mich, dass nicht mehr Leute damit zu tun haben.
      ![](http://www.easyofficeweb.de/S2 1.jpg)

      Das GPS-Symbol blinkt nicht mehr, das Merken der Bestätigung nicht zulassen und nun bestätigen:
      ![](http://www.easyofficeweb.de/S2 2.jpg)

      Dann erhält man tatsächlich einen GPS-Wert:
      ![](http://www.easyofficeweb.de/S2 3.jpg)

      Will man nun erneut den Standort abfragen, dann besteht ja für die Website und diese Session die Erlaubnis für eine Standortabfrage. Die API fordert nun von den verfügbaren Datenquellen unverzüglich den Standort ab, GPS bleibt dabei aber außen vor, da das Fixing gar nicht abgewartet wird.
      Ich würde mal behaupten, lieblos programmiert. Oder kann mich jemand vom Gegenteil überzeugen?

      Gruß Tom

      1. Was hab ich bei den Bildern falsch gemacht??

        Tom

      2. Hier also die Beschreibung meines Vorgehens:

        Erst einmal in den Geräte-Einstellungen die 2 Haken setzen:

        dann in den Einstellungen des Browsers unter ERWEITERT-STANDORT einen Haken setzen:

        Nun können GPS-Signale empfangen werden (GPS einschalten nicht vergessen). Dazu Klick auf GPS-Symbol oben links, bei der Beispiel-Website ist das analog zu machen) Bei erstmaligem Aufruf kommt die Abfrage, ob zugelassen werden soll. Man achte auf das blinkende GPS-Symbol in der Statusleiste des Handys, das den Fix-Prozeß anzeigt.
        Ein geschlagenes Viertel-Jahr habe ich sofort die Abfrage bestätigt, daraufhin verschwand das Symbol wieder aus der Statuszeile und ich bekam nur einen Wert über WLAN und Mobilfunknetz. Nur durch Zufall kam ich drauf, nicht sofort zu bestätigen, sondern das Fixing abzuwarten, bis das Symbol also nicht mehr blinkt und dann erst zu bestätigen. In keiner Dokumentation ist das beschrieben worden. Ich wundere mich, dass nicht mehr Leute damit zu tun haben.

        Das GPS-Symbol blinkt nicht mehr, das Merken der Bestätigung nicht zulassen und nun bestätigen:

        Dann erhält man tatsächlich einen GPS-Wert:

        Will man nun erneut den Standort abfragen, dann besteht ja für die Website und diese Session die Erlaubnis für eine Standortabfrage. Die API fordert nun von den verfügbaren Datenquellen unverzüglich den Standort ab, GPS bleibt dabei aber außen vor, da das Fixing gar nicht abgewartet wird.
        Ich würde mal behaupten, lieblos programmiert. Oder kann mich jemand vom Gegenteil überzeugen?

        Gruß Tom

  2. હેલો

    Da ich von Geräteseite keine weiteren Möglichkeiten sehe, diese beschriebene Umständlichkeit zu umgehen, hoffe ich auf Hilfe hier. (im übrigen verweist Google auf den Gerätehersteller und der Gerätehersteller auf den Anbieter der API, also Google!)

    Wie stellt das S2 die GEO-Daten zur Verfügung, wie rufst du diese auf? XML, CSV oder TXT? Kannst du nicht mittels AJAX nur die GPS-Daten neu anfordern, ohne die Seite neu zu laden?

    બાય

    --
     .
    ..:
    1. Die API ist im Browser, bei mir also der von Android, integriert und wird über Javascript aufgerufen.
      Hab bisher nur von AJAX gehört, dass man damit nette Sachen machen kann. Glaube aber nicht, dass in diesem Fall AJAX weiterhilft.

      Die GPS-Daten einfach neu anfordern, genau das ist mein Ziel, heißt also die entsprechende JSA-Funktion erneut aufrufen. Nur da hakt es eben. Der Browser weiß, dass die Standortabfrage bereits erfolgt ist und stellt daraufhin keine Verbindung mehr zum GPS-Empfänger her.

      Ich meinte die Doku vom W3C.

      Glaube ich auch, dass das Problem nicht mit der API zu tun hat.

      Die Werte sind schon brauchbar, es nervt nur, eine Seite immer neu aufrufen zu müssen, wenn man seinen Standort aktualisieren will.

      Hat denn jemand schon mal meine Testseite aufgerufen, mit nem Handy (mit GPS) wohlgemerkt?

      Gruß Tom

      1. હેલો

        Die Werte sind schon brauchbar, es nervt nur, eine Seite immer neu aufrufen zu müssen, wenn man seinen Standort aktualisieren will.

        Genau hier kann dir AJAX helfen. Mit AJAX kannst du das JS anfordern, welches dir die GEO-Koordinaten liefert. Wie rufst du das Javascript auf, um die Werte zu bekommen? Als was kommen sie bei dir an? JSON, XML?

        Hat denn jemand schon mal meine Testseite aufgerufen, mit nem Handy (mit GPS) wohlgemerkt?

        Mit einem S4, GPS und WLAN an. Sieht aus aus, wie auf dem Desktop. Keine Standortabfrage.

        બાય

        --
         .
        ..:
        1. die Kommunikation zwischen api und Datenquellen läuft wohl über json.

          Mit einem S4, GPS und WLAN an. Sieht aus aus, wie auf dem Desktop. Keine Standortabfrage.

          બાય

          dann sind grundsätzliche Einstellungen noch nicht gesetzt.
          ich fasse die heute Abend mal zusammen mit ein paar Fotos zum nachvollziehen.
          bis dann

          1. હેલો

            die Kommunikation zwischen api und Datenquellen läuft wohl über json.

            Ich werde es bei Gelegenheit mal selbst Googlen.

            dann sind grundsätzliche Einstellungen noch nicht gesetzt.
            ich fasse die heute Abend mal zusammen mit ein paar Fotos zum nachvollziehen.

            Im S4 sind die Einstellungen etwas anders, aber ja, im Grunde sind die Einstellungen bei mir, genau wie bei dir. Ich surfe mit Chrome, habe es aber auch mit dem Samsung-Browser probiert.

            Abgesehen davon, was soll denn passieren, wenn ich die Seite mit einem S4 aufrufe? Auf der Seite ist kein Code, der eine Standortabfrage durchführt. Alle Werte sind doch bereits im Quellcode?

            બાય

            --
             .
            ..:
            1. હેલો

              Abgesehen davon, was soll denn passieren, wenn ich die Seite mit einem S4 aufrufe? Auf der Seite ist kein Code, der eine Standortabfrage durchführt. Alle Werte sind doch bereits im Quellcode?

              બાય

              Du hast die geo.js übersehen, die anfangs geladen wird. Im Quellcode sind nur die aus der DB ausgelesenen zu einem früheren Zeitpunkt aufgenommenen Koordinaten,, über die geo.js wird der aktuelle Standort bestimmt.
              Ich werde mal Ausgaben für den Fehlerfall in  die geo.js reinsetzen, dann kannst Du noch mal probieren.
              Gib mir 5 min.

              1. હેલો

                Du hast die geo.js übersehen, die anfangs geladen wird.

                Nicht übersehen, ich hätte nur nicht gedacht, dass man mit den Paar Zeilen Javascript an diese Daten kommt.

                Gib mir 5 min.

                Die Uhr tickt!                      ;)

                બાય

                --
                 .
                ..:
                1. Gib mir 5 min.

                  Die Uhr tickt!                      ;)

                  ist bereits drin. also wenn deine Einstellungen korrekt sind, müsste entweder ein Ergebnis oder eine Fehlermeldung kommen. lösche vielleicht vorher nochmal für alle Webseiten die Zustimmung zur Standort Übermittlung.

                  1. હેલો

                    ist bereits drin. also wenn deine Einstellungen korrekt sind, müsste entweder ein Ergebnis oder eine Fehlermeldung kommen. lösche vielleicht vorher nochmal für alle Webseiten die Zustimmung zur Standort Übermittlung.

                    Kannst du schritt für Schritt beschreiben, was ich tun soll, und was infolge dessen passieren sollte? Also was du von dem Script erwartest?

                    In meinem S4 ist alles aktiviert, wie bei dir. Wenn ich die Seite mit dem S4 aufrufe, und da auf einen „Ort“ oder „Info“ klicke, bekomme ich genau das zu sehen, was ich hier auf dem Laptop sehe (die Vordefinierten Orte). Vielleicht hat sich seit den letzten 2 Versionen einiges geändert?

                    Wenn's bei dir funktioniert, hätte ich vllt. einen Tipp. Sagt dir JQuery was?

                    બાય

                    --
                     .
                    ..:
                    1. હેલો

                      ist bereits drin. also wenn deine Einstellungen korrekt sind, müsste entweder ein Ergebnis oder eine Fehlermeldung kommen. lösche vielleicht vorher nochmal für alle Webseiten die Zustimmung zur Standort Übermittlung.

                      Kannst du schritt für Schritt beschreiben, was ich tun soll, und was infolge dessen passieren sollte? Also was du von dem Script erwartest?

                      In meinem S4 ist alles aktiviert, wie bei dir. Wenn ich die Seite mit dem S4 aufrufe, und da auf einen „Ort“ oder „Info“ klicke, bekomme ich genau das zu sehen, was ich hier auf dem Laptop sehe (die Vordefinierten Orte). Vielleicht hat sich seit den letzten 2 Versionen einiges geändert?

                      Wenn's bei dir funktioniert, hätte ich vllt. einen Tipp. Sagt dir JQuery was?

                      બાય

                      also klick auf zeile ausser Kopfzeile an beliebiger stelle oeffnet fenster mit Karten Ausschnitt zentrum mit roter Markierung. der gespeicherte wert.
                      klick auf button oben links des kartenfensters also gps symbol dann wird die Standortbestimmung aktiviert. danach wird die karte aktualisiert mit zwei Markierungen.  rot wie am anfang und grün neu hinzu. mittig der Abstand beider Punkte in metern.
                      ich muss ins koerbchen
                      bis morgen tom

                      1. હેલો

                        also klick auf zeile ausser Kopfzeile an beliebiger stelle oeffnet fenster mit Karten Ausschnitt zentrum mit roter Markierung. der gespeicherte wert.
                        klick auf button oben links des kartenfensters also gps symbol dann wird die Standortbestimmung aktiviert. danach wird die karte aktualisiert mit zwei Markierungen.  rot wie am anfang und grün neu hinzu. mittig der Abstand beider Punkte in metern.

                        Cool, nach dem 2. klick hat's funktioniert. Ich schaue mir das morgen genauer an, will auch in die Heier.

                        BTW, bei mir blinkt das Symbol erneut, wenn ich es wiederholt klicke. Also es funktioniert bereits ohne Reload, zumindest bei mir.

                        બાય

                        --
                         .
                        ..:
                        1. nimm mal diesen Link:
                          http://www.easyofficeweb.de/apps/GEOLOCATION2.htm
                          da werden die Koordinaten und die Genauigkeit in Textfelder gesetzt. Da kann man besser sehen, dass nach dem Laden beim Erstaufruf die Genauigkeit (WLAN mal ausschalten) bei 5-20 m liegt (3. Textfeld), beim 2. Mal dann aber (zumindest bei mir) bei um die 3000m (Mobilfunknetz)
                          Gruß Tom

                          1. હેલો

                            nimm mal diesen Link:

                            Bin leider erst morgen wieder zuhause (bin seid gestern unterwegs), dann schaue ich mir das an. Mit dem ding hier (s4) kann man nicht wirklich arbeite .

                            બાય

                            --
                             .
                            ..:
                          2. હેલો

                            http://www.easyofficeweb.de/apps/GEOLOCATION2.htm
                            da werden die Koordinaten und die Genauigkeit in Textfelder gesetzt.

                            So wie es aussieht, kann die Galaxy-Reihe das nicht wirklich. Ich habe jetzt zahlreiche tests (letzter Stand) probiert, und egal, was ich versucht habe, im S4 funktioniert nichts. Eine mögliche Lösung wäre wohl JQuery Mobile.

                            Mit einem Desktop-Browser ist es sogar möglich, die Koordinaten bei klick immer wieder in eine Datei zu schreiben, aber mit dem S4 funktioniert das leider nicht.

                            બાય

                            --
                             .
                            ..:
                            1. was meinst du mit: es funktioniert nichts.
                              wieso was in eine Datei schreiben?
                              und was genau soll jquery hier machen?
                              Gruß tom

                              1. હેલો

                                was meinst du mit: es funktioniert nichts.
                                wieso was in eine Datei schreiben?
                                und was genau soll jquery hier machen?

                                Geolocation funktioniert nicht im S4. Mit JQuery wollte ich die Geo-Daten immer wieder neu laden, bspw. bei einem klick, um sie anschliessend irgendwo zu speichern (in dem Fall war es eine Textdatei, könnte aber auch eine DB sein).

                                Bei klick auf Geo-Daten blinkt zwar das kleine GPS-Symbol auf dem Galaxy, aber es liefert keine Daten. Dabei spielt es keine Rolle, ob WLAN oder Mobile Daten aktiviert ist. Die GEO-Daten werden nicht angezeigt. Da man auf dem Smartphone nicht wirklich debuggen kann, kann ich nicht mal sagen, woran es liegt. Auf dem Desktop-Rechner funktioniert es wie erwartet.

                                બાય

                                --
                                 .
                                ..:
                                1. die geolocation funktioniert schon mit s4, bei meiner Tochter hab ich dies schon probiert.

                                  dennoch dank dir fuer dein bemühen.

                                  Gruß tom

                                  1. હેલો

                                    die geolocation funktioniert schon mit s4, bei meiner Tochter hab ich dies schon probiert.

                                    Auch diese Seite? Ich habe es jetzt nochmal getestet. Bei klick auf das Symbol blinkt das GPS-Symbol auf dem S4, ein alert poppt auf mit der Zahl „3“, und das war's. Ich habe jetzt alles nochmal zurückgesetzt, Cache geleert und getestet, keine Daten. Wie kommst du mit dem S4 an die Daten?

                                    બાય

                                    --
                                     .
                                    ..:
                                    1. erstmal sorry, meine tochter hatn s3, da geht's aber auch.
                                      die 3 bedeutet "timeout"-error und kommt von der geolocation-api, die zeit, die in den Einstellungen festgesetzt wurde, ist überschritten, ohne, dass ein positions-object erstellt werden konnte. frag mich nicht, was das im Klartext bedeutet. den fehler habe ich hin und wieder mit dem Laptop.
                                      sagtest du nicht neulich, es würde funktionieren mit der anderen seite? beide nutzen allerdings dieselbe script-datei.

                                      1. હેલો

                                        sagtest du nicht neulich, es würde funktionieren mit der anderen seite?

                                        Es sah leider nur so aus, bzw. hatte ich fälschlicherweise angenommen, dass es das tut. Das Symbol blinkt, dann kommt alert mit 3 (bei beiden Versionen), und das war's. Auf meinem Laptop funktioniert es, im S4 nicht.

                                        બાય

                                        --
                                         .
                                        ..:
                                        1. welchen Browser hat dein s4?

                                          1. હેલો

                                            welchen Browser hat dein s4?

                                            Samsungs Internen Browser, Chrome, Firefox und Opera Mini. Bis auf Firefox kann es keiner der genannten Kandidaten. Firefox ist auch erschreckend Flott auf dem S4, die Daten stehen direkt zur verfügung.

                                            બાય

                                            --
                                             .
                                            ..:
                                            1. Samsungs Internen Browser, Chrome, Firefox und Opera Mini.

                                              mal ne frage nebenbei wofür braucht man vier Browser? ??

                                              Bis auf Firefox kann es keiner der genannten Kandidaten.

                                              moeglicherweise sind bei den anderen die Einstellungen doch noch nicht vollständig korrekt, anders kann man das kaum erklären.

                                              Firefox ist auch erschreckend Flott auf dem S4, die Daten stehen direkt zur verfügung.

                                              બાય

                                              soll heißen nur mobil Funk Daten herangezogen.  kam denn die abfrage zur Einholung der Zustimmung zur Standortuebermittlung?

                                              1. Om nah hoo pez nyeetz, xyz!

                                                Samsungs Internen Browser, Chrome, Firefox und Opera Mini.
                                                mal ne frage nebenbei wofür braucht man vier Browser? ??

                                                Als Entwickler sollte man seine Produkte in möglichst vielen Umgebungen testen.

                                                Matthias

                                                --
                                                Der Unterschied zwischen Java und JavaScript ist größer als der zwischen Volt--1 und Voltaire.

                                              2. હેલો

                                                mal ne frage nebenbei wofür braucht man vier Browser? ??

                                                Ich habe auf mehreren Systemen ein Paar Hände voll Browser. Ca. 15, nur aus diesem Grund habe ich Speedtab geschrieben.

                                                moeglicherweise sind bei den anderen die Einstellungen doch noch nicht vollständig korrekt, anders kann man das kaum erklären.

                                                Da kann man nicht viel falsch machen. Firefox ist einfach zu Geil für dieses Web ;)

                                                soll heißen nur mobil Funk Daten herangezogen.  kam denn die abfrage zur Einholung der Zustimmung zur Standortuebermittlung?

                                                Nein, nur einmal.

                                                બાય

                                                --
                                                 .
                                                ..:
  3. Mir drängt sich der Verdacht auf, dass hier ganz schön aneinander vorbei geredet wird.
    Dein Beispiel nutzt die geolocation-API nämlich garnicht, dafür finden sich dort einige Hinweise auf die Google-Maps-API.

    1. Mir drängt sich der Verdacht auf, dass hier ganz schön aneinander vorbei geredet wird.
      Dein Beispiel nutzt die geolocation-API nämlich garnicht, dafür finden sich dort einige Hinweise auf die Google-Maps-API.

      hier ein Codeausschnitt, den ich damals unter dem Stichwort Gelocation-API für HTML5 gefunden habe:
      var options = {enableHighAccuracy: true, timeout: 8000, maximumAge: 0};
      var nav = null;
      if (nav == null) { nav = window.navigator; }
      if (nav != null) {var geoloc = nav.geolocation;}

      Wer kann mir sagen, was ich bei den Bildern falsch gemacht habe, dass diese nicht angezeigt werden????

  4. Ergänzungsfrage meinerseits

    Dass die API mit der Abfrage der einzelnen Datenquellen sofort nach Erhalt bzw. Besitz der Zustimmung zur Standortübermittlung startet, ohne die verzögerte Reaktionszeit des GPS-Empfängers zu berücksichtigen, ist zwar unverständlich für mich und ärgerlich, aber software-seitig wohl so festgelegt und daher nicht zu ändern.

    Da die API bei jedem Neuladen der Seite die Zustimmung einfordert (außer man hat generell zugestimmt) vermute ich einen Zusammenhang zur Session-ID. Sofern diese unterschiedlich zur vorhergehenden der selben Seite, kommt die Abfrage. Wenn dem so ist, wäre die Idee, nach der Standortabfrage clientseitig die Session-ID zu verändern, zum Server zu schicken und nur den Header anzufordern, der die Session-ID wieder mitschickt. Für die API wäre danach die erhaltene ungleich der zuvor bedienten und die Zustimmung des Nutzers müsste erneut eingeholt werden.

    Sind diese Überlegungen vom Grundsatz her nachvollziehbar und halbwegs richtig?
    Falls ja, wie könnte man dies umsetzen?

    Gruß Tom