[js] navigator.geolocation.getCurrentPosition accuracy laag

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • -weenie-
  • Registratie: Januari 2005
  • Laatst online: 21-02 12:17
Hallo Mede-devvers,

Ik zit al een aantal weken te stoeien met de location services binnen de mobiele browsers (vooral iPad/Safari).

Ik ben bezig met het bouwen van een kilometer registratie module binnen een webapp. En daarvoor wil ik de GPS locatie gebruiken van het device.
Daar voorzien de meeste browsers gelukkig wel in, maar niet helemaal zoals ik het wens.

De precisie (accuracy) die wordt gemeld vanuit de api, is ronduit slecht en veel te hoog. Met enige regelmaat zijn er waarden met een afwijking van 1KM tot wel 20KM.
Bijvoorbeeld; met de iPad met 3g/4g ongeveer 3000 locatie requests totaal, met een gemiddelde accuracy van 1240. (dat is dus 1240 afwijking)

Heb mijn eigen wrapper functie gebouwd, om het wat makkelijker te maken te loggen and such.

De timeout is inmiddels van 5000 naar 20000 verhoogd, met 0 resultaat.

Wie o Wie kan mij uit de brand helpen?


JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
var locationServices = {
    options: {
        enableHighAccuracy: true,
        timeout: 20000,
        maximumAge: 0
    },
    getLocation: function(success, error){
        $('.location-service:not(:disabled)').prop('disabled', true).prop('disabled-by-location-services', true);

        navigator.geolocation.getCurrentPosition(
            function (loc) {

                /* Re-enable diabled fields */
                $('.location-service').filter(function(){
                    return $(this).prop('disabled-by-location-services') == true;
                }).prop('disabled', false).prop('disabled-by-location-services', '')


                /* Log the accuracy and such */
                var message = '[LocationServices] Accuracy: ' + loc.coords.accuracy + ', latitude: ' + loc.coords.latitude  + ', longitude: ' + loc.coords.longitude +
                    ' <iframe style="width: 100%; height: 300px; border: 1px solid #5e5e5e;" src="http://maps.google.com/maps?q=' + loc.coords.latitude + ',' + loc.coords.longitude + '&output=embed" /> [UserAgent] ' + navigator.userAgent;
                locationServices.log(message);

                success.call(this, loc);
            },
            function (e) {
                locationServices.log('[LocationServices] Failed getting location. [UserAgent] ' + navigator.userAgent)
                error.call(this, e);
            },
            locationServices.options
        );
    },
    log: function(message){


        $.post(basehref + '/log/message', {message : message });
    }
};

Acties:
  • 0 Henk 'm!

  • HyperioN
  • Registratie: April 2003
  • Laatst online: 07-10 22:02
Wellicht kun je hier wat mee:
https://github.com/gwilson/getAccurateCurrentPosition
I would sometimes get an accuracy of over 1000 meters.
Basically, the first location to be acquired is what is passed to the callback.
[...]
In my own testing with a freshly booted device, it will take between 2 and 6 callbacks to get to something highly accurate.

[ Voor 8% gewijzigd door HyperioN op 04-06-2015 18:03 ]


Acties:
  • 0 Henk 'm!

  • -weenie-
  • Registratie: Januari 2005
  • Laatst online: 21-02 12:17
Thanks! Ik ga eens kijken of dat helpt :-)

Acties:
  • 0 Henk 'm!

  • -weenie-
  • Registratie: Januari 2005
  • Laatst online: 21-02 12:17
Update: Het lijkt te hebben gewerkt! Heb nu geforceerd 6x de locatie op te halen en de gemiddelde afwijking afgelopen 3 dagen was tussen de 300 en 500 meter ! :D

Vielen mahlen dank!