Flutter-geolocator: Нет информации о местоположении, не могу получить местоположение

Созданный на 3 февр. 2020  ·  17Комментарии  ·  Источник: Baseflow/flutter-geolocator

геолокатор: ^5.2.1

Я получил разрешение на определение местоположения, но вызываю меход
await Geolocator().getLastKnownPosition(desiredAccuracy: LocationAccuracy.high).then((location){print('$location');});
местоположение равно нулю;
и вызывая меход
await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high).then((location){print('$location');});
нет ответа на местоположение。

Самый полезный комментарий

Та же проблема здесь. Вызов getCurrentPosition зависает навсегда. Это происходит независимо от того, были ли разрешения уже предоставлены или нет. Если появляется диалоговое окно разрешения, независимо от того, что отвечает пользователь, вызов также никогда не возвращается.

На Android: что-то странное в том, что первые пару раз это работало хорошо. Я отказал в разрешениях системных настроек, чтобы продолжить тестирование. Потом он больше никогда не работал. Я перезагрузил устройство, проблема осталась.

Затем я перешел на iOS-устройство, и проблема обнаружилась с первого же теста.

Пробовал с геолокатором 5.2.1 и 5.1.5.
Flutter (мастер канала, v1.15.4-pre.82, в Mac OS X 10.15.2 19C57, языковой стандарт en-ES)
Физические устройства: Huawei P8 (Android 6.0), iPhone X (iOS 13.3.1)

Я предполагаю, что это связано с # 393 и # 375, хотя в моем случае изменение desiredAccuracy тоже не сработало.

Все 17 Комментарий

@ chao9267 , не могли бы вы предоставить немного больше информации?

Подло меня бы заинтересовала платформа, на которой вы находитесь.

@mvanbeusekom флаттер доктор
Сводка по доктору (чтобы увидеть все подробности, запустите flutter doctor -v):
[√] Flutter (стабильная версия канала, v1.9.1+исправление.6, в Microsoft Windows [версия 6.1.7601], локаль zh-CN)
[√] Android toolchain — разработка для Android-устройств (Android SDK версии 29.0.2)
[√] Android Studio (версия 3.5)
[√] Подключенное устройство (доступно 1)

Вы тестируете Android на симуляторе или на реальном устройстве?

Службы определения местоположения включены? если на симуляторе вы на самом деле имитируете координаты GPS?

Я использовал версию 5.1.5, которая раньше была нормальной, но теперь она недействительна. То же самое, когда я перехожу на версию 5.2.1. Я использую настоящий тест телефона Android, и в настройках системы включено разрешение на определение местоположения моего приложения.

Вот скриншот для вызова метода getCurrentPosition

В 2020-02-03 16:31:52, «Моритс ван Беусеком» [email protected] написал:

Вы тестируете Android на симуляторе или на реальном устройстве?

Службы определения местоположения включены? если на симуляторе вы на самом деле имитируете координаты GPS?


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

У меня тоже такая же проблема. Версия 5.1.5 нормально работала на моем телефоне. Я только что обновился до v5.2.1. Все та же проблема (нет ответа от getCurrentPosition)
Мои характеристики:
[✓] Flutter (канал неизвестен, v1.12.13+hotfix.4, на Mac OS X 10.14.6 18G95,
локаль en-US)

[✓] Набор инструментов Android — разработка для устройств Android (Android SDK версии 28.0.3)
[✓] Xcode — разработка для iOS и macOS (Xcode 11.3.1)
[✓] Android Studio (версия 3.3)
[✓] Подключенное устройство (доступно 1)

Физическое устройство: iphone 8 (13.3.1)

Та же проблема здесь. Вызов getCurrentPosition зависает навсегда. Это происходит независимо от того, были ли разрешения уже предоставлены или нет. Если появляется диалоговое окно разрешения, независимо от того, что отвечает пользователь, вызов также никогда не возвращается.

На Android: что-то странное в том, что первые пару раз это работало хорошо. Я отказал в разрешениях системных настроек, чтобы продолжить тестирование. Потом он больше никогда не работал. Я перезагрузил устройство, проблема осталась.

Затем я перешел на iOS-устройство, и проблема обнаружилась с первого же теста.

Пробовал с геолокатором 5.2.1 и 5.1.5.
Flutter (мастер канала, v1.15.4-pre.82, в Mac OS X 10.15.2 19C57, языковой стандарт en-ES)
Физические устройства: Huawei P8 (Android 6.0), iPhone X (iOS 13.3.1)

Я предполагаю, что это связано с # 393 и # 375, хотя в моем случае изменение desiredAccuracy тоже не сработало.

Видя ту же проблему с

геолокация 5.2.1

[✓] Flutter (Channel stable, v1.12.13+hotfix.8, on Mac OS X 10.15.2 19C57, locale en-US)

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 11.3.1)
[✓] Android Studio (version 3.5)
[✓] VS Code (version 1.41.1)
[✓] Connected device (2 available)

В моем случае воспроизводится только на реальном устройстве Android. getCurrentPosition висит на неопределенный срок. Изменение desiredAccuracy не исправит ситуацию.

Нет проблем с ios для моего случая.

тоже самое нет ответа

void getLocation() async { Position position = await Geolocator() .getCurrentPosition(desiredAccuracy: LocationAccuracy.high); print(position); }

Я смог решить проблему, добавив
>

NSLocationAlwaysUsageDescription
Этому приложению требуется доступ к местоположению в фоновом режиме.
NSLocationAlwaysAndWhenInUseUsageDescription
Этому приложению требуется доступ к местоположению, когда оно открыто и работает в фоновом режиме.

в мой файл Info.plist. Вы, ребята, должны проверить, добавлены ли приведенные выше коды.

В среду, 25 марта 2020 г., в 8:02
написал:

тоже самое нет ответа

void getLocation() async { Position position = await Geolocator()
.getCurrentPosition (желаемая точность: LocationAccuracy.high);
печать (позиция); }


Вы получаете это, потому что вы прокомментировали.
Ответьте на это письмо напрямую, просмотрите его на GitHub
https://github.com/Baseflow/flutter-geolocator/issues/386#issuecomment-603890873 ,
или отписаться
https://github.com/notifications/unsubscribe-auth/AELYL4FI4EEHNNJ6ZP2WMNDRJIMIDANCNFSM4KPA5CPQ
.

использование ACCESS_FINE_LOCATION вместо ACCESS_COARSE_LOCATION может устранить мою ошибку на Android (используя симулятор).

Я использую Pixel 2 с версией Android 10, чтобы протестировать эту функцию получения текущего местоположения, но я не могу получить местоположение. Проблема, с которой я столкнулся, заключается в том, что значок местоположения не включается автоматически после предоставления разрешения на определение местоположения. Пользователь должен нажать на значок местоположения вручную, чтобы указать свое местоположение, что не является ожидаемым поведением.

Ниже приведены шаги, которые выполняются после установки приложения :

  1. Нажмите кнопку, чтобы получить текущее местоположение, и появится диалоговое окно с 3 вариантами (разрешить все время, разрешить при использовании приложения и запретить и больше не спрашивать)

  2. Нажмите «Разрешить все время » или « Разрешить» при использовании параметра приложения в диалоговом окне, в идеале он должен включить значок местоположения, но я вижу, что после предоставления разрешения разрешение «Местоположение» есть в разделе «Разрешение приложения», но значок «Местоположение» по-прежнему отключен, который должен автоматически включаться, как только пользователь предоставляет разрешение.

В настоящее время я использую Flutter 1.18.0 • Channel dev

Версия плагина Geolocator: -
геолокатор: ^5.3.1

Код:-

Position position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    print(position);

У меня такая же проблема при запуске на устройстве Android 9 (в режиме отладки), при отличной работе эмулятора.
это мой код:

getCurrentLocation() async { final Geolocator geolocator = Geolocator()..forceAndroidLocationManager; await geolocator .getCurrentPosition(desiredAccuracy: LocationAccuracy.high) .then((Position position) { setState(() { _currentPosition = position; }); }).catchError((e) { print(e); }); }

ошибка не отображается..

В настоящее время я использую Flutter 1.18.0-6.0.pre64.
Версия плагина геолокатора: геолокатор: ^5.3.1

После отладки этой проблемы я думаю, что это может быть связано с новой версией плагина location_permissions . Этот плагин требует, чтобы ваш проект был обновлен до структуры проекта Flutter 1.12. * Android.

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

Пожалуйста, дайте мне знать, если это решит проблему.

Эта проблема должна быть решена в версии 6.0.0-rc.x . Я буду продвигать это к стабильной в ближайшее время.

Также убедитесь, что на Android вы добавили разрешение ACCESS_FINE_LOCATION в свой AndroidManifest.xml (использование ACCESS_COARSE_LOCATION действительно возвращает местоположения с большой задержкой). Дополнительную информацию о добавлении разрешений можно найти здесь (в разделе Android).

Возможно, стоит упомянуть в README.md, что использование ACCESS_COARSE_LOCATION вызывает задержки при обновлении местоположения. В частности, на эмуляторе это, по-видимому, приводит к задержкам более чем на несколько минут при получении исходной позиции (может быть, позиция так и не была получена, но я подождал всего несколько минут, чтобы увидеть). Это связано с тем, что ACCESS_COARSE_LOCATION предоставляет приложению доступ только к поставщикам сетевых услуг, а не к GPS. Я столкнулся с этой проблемой в версии 6.0.0-rc.4 и решил, что это ошибка, но после некоторой отладки я понял, что мне просто нужно добавить ACCESS_FINE_LOCATION . Документы в настоящее время утверждают, что грубое определение местоположения работает примерно на уровне городских кварталов.

@matthewlloyd спасибо за предложение. Сегодня утром я выпустил финальную версию геолокатора 6.0.0 и обновил документацию, чтобы объяснить, что такое разрешение ACCESS_COARSE_LOCATION .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги