Я пытаюсь использовать прямое 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