Точность Android GPS высока только при включенных маршрутах Google Maps?

Мне нужно точное местоположение GPS в моем приложении для Android. Я использую этот плагин Cordova для определения местоположения GPS: https://github.com/pmwisdom/cordova-background-geolocation-services

Это код, который запрашивает местоположение GPS:

if (locationClientAPI == null) {
            connectToPlayAPI();
        } else if (locationClientAPI.isConnected()) {
            locationRequest = LocationRequest.create()
                    .setPriority(translateDesiredAccuracy(LocationRequest.PRIORITY_HIGH_ACCURACY))
                    .setFastestInterval(4000)
                    .setInterval(5000)
                    .setSmallestDisplacement(0);

            LocationServices.FusedLocationApi.requestLocationUpdates(locationClientAPI, locationRequest, locationUpdatePI);
            this.isRecording = true;

            if(isDebugging) {
                Log.d(TAG, "- Recorder attached - start recording location updates");
            }
        } else {
            locationClientAPI.connect();
        }

Это работает на многих телефонах Android, но на некоторых (например, Samsung Galaxy S8) точность ОЧЕНЬ плохая. Часто 500-1500 м, что совершенно непригодно для приложения. Я также заметил, что если я одновременно открою Карты Google, местоположение также будет повсюду, ДО ТОГО, как я начну путеводители по маршруту, - тогда оно станет точным, почти мгновенно. И если я использую свое приложение, когда включен маршрут, все очень точно и красиво.

В настройках Android моему приложению разрешено использовать самую высокую точность GPS.

Как я могу добиться высокой точности без необходимости включать навигацию по маршруту в картах Google.


person Jolle    schedule 06.02.2018    source источник
comment
С какими версиями Android вы сталкиваетесь с проблемами точности?   -  person DaveAlden    schedule 07.02.2018
comment
@DaveAlden Android 7.0   -  person Jolle    schedule 07.02.2018


Ответы (1)


Как насчет этого?

var option = {
  enableHighAccuracy: true // use GPS as much as possible
};
plugin.google.maps.LocationService.getMyLocation(option, function(location) {
    var text = ["Current your location:\n",
      "latitude:" + location.latLng.lat.toFixed(3),
      "longitude:" + location.latLng.lng.toFixed(3),
      "speed:" + location.speed,
      "time:" + location.time,
      "bearing:" + location.bearing].join("\n");

    alert(text);
});

https://github.com/mapsplugin/cordova-plugin-googlemaps-doc/blob/master/v2.0.0/ReleaseNotes/v2.2.0/README.md#locationservicegetmylocation-without-map

person wf9a5m75    schedule 07.02.2018
comment
Нам нужно использовать нативные функции для местоположений - person Jolle; 08.02.2018
comment
Этот плагин предоставляет собственные функции для Android и iOS. - person wf9a5m75; 08.02.2018