Проблемы с отслеживанием местоположения флаттера - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь использовать прямое GPS-отслеживание в своем приложении для отслеживания перемещений пользователей, но все это противоречиво.Я использую две из рекомендованных библиотек для достижения этой цели.Вот две библиотеки, которые я использую:

Вот проблема.Обе библиотеки возвращают координаты, но всякий раз, когда я мертв, координаты GPS продолжают прыгать.Я буквально кладу свой телефон на стол, и я увижу, как эти две библиотеки дают мне разные координаты каждую секунду, даже если мой телефон мертв.Я бы сказал, что координаты часто находятся в радиусе 10 метров, но это абсолютно исключает мою основную функцию приложения, потому что мне нужна, по крайней мере, точность или согласованность.Я, скорее всего, что-то упустил, если так, может кто-то, пожалуйста, помогите.Вот мой код, использующий обе библиотеки:

Библиотека местоположения:

var location = new Location();

        location.onLocationChanged().listen((LocationData currentLocation) {
          print("Coord: ${currentLocation.latitude} ${currentLocation.longitude}");
          _approachingGate
              .getApproachingGate(
                  Position(
                      latitude: currentLocation.latitude,
                      longitude: currentLocation.longitude),
                  _userGates,
                  distance: 0)
              .then((Map<String, Object> value) {
            _nearbyGate = value[Constants.GATE];
            notifyListeners();
          });
        });

Библиотека геолокации:

var geoLocator = Geolocator();
        var locationOptions = LocationOptions(
            accuracy: LocationAccuracy.bestForNavigation,);

        Position position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.best);
        _approachingGate
            .getApproachingGate(position, _userGates,distance: 8)
            .then((Map<String, Object> value) {
          _nearbyGate = value[Constants.GATE];
          notifyListeners();

        });

        _positionStream = geoLocator
            .getPositionStream(locationOptions)
            .listen((Position position) {
              print("Coord: ${position.latitude} ${position.longitude}");
          _position = position;
          var x = 2.0;
          _approachingGate
              .getApproachingGate(position, _userGates,distance: x)
              .then((Map<String, Object> value) {
            _nearbyGate = value[Constants.GATE];

            notifyListeners();

          });

Библиотека GeoLocator позволяет мне использовать distanceFilter обновлять только после перемещения на определенное расстояние, и по какой-то причине он работает только тогда, когда он хочет.

Вот некоторые из выводов, которые я только что получил сейчас, когда я был занят, набирая это, когда мое устройство не работает настол.

I/flutter ( 7705): Coord: -26.1010019 28.0388391
I/flutter ( 7705): Coord: -26.101002 28.0388395
I/flutter ( 7705): Coord: -26.1010019 28.0388403
I/flutter ( 7705): Coord: -26.1010018 28.0388407
I/flutter ( 7705): Coord: -26.1010018 28.0388393
I/flutter ( 7705): Coord: -26.1010026 28.0388364
I/flutter ( 7705): Coord: -26.1010022 28.0388392
I/flutter ( 7705): Coord: -26.101002 28.0388393
I/flutter ( 7705): Coord: -26.1010021 28.0388405
I/flutter ( 7705): Coord: -26.1010024 28.03884
I/flutter ( 7705): Coord: -26.1010025 28.038839
I/flutter ( 7705): Coord: -26.1010022 28.0388383
I/flutter ( 7705): Coord: -26.1010423 28.0388409
I/flutter ( 7705): Coord: -26.1010033 28.0388375
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...