Phonegap включает GPS/местоположение во время выполнения приложения

Я использую jquery-ui-maps и геолокацию HTML5, чтобы показать пользователю список местоположений, и мне нужно использовать геолокацию пользователя.

Итак, вот вариант использования,

  1. У пользователя не включены службы GPS/местоположения.
  2. Пользователь открывает приложение и переходит к представлению, которое вызывает navigator.geolocation чтобы получить позицию пользователя
  3. Приложение выдает ошибку и уведомляет пользователя, что он должен включить службы GPS/местоположения.
  4. Затем пользователь выходит из приложения и включает GPS.
  5. Когда пользователь возвращается в приложение и пытается просмотреть карту (снова вызывая геолокацию), приложение по-прежнему не может использовать GPS.

Я полагаю, что сузил это до проблемы Phonegap, когда разрешения GPS инициализируются при загрузке приложения и никогда не переоцениваются.

Мой вопрос: можно ли включить GPS во время выполнения приложения или Phonegap требует перезагрузки приложения для использования GPS?


person mondeeds    schedule 04.11.2013    source источник
comment
Я сделал ответ для вас. если вы хотите, чтобы на код смотрели, вы должны опубликовать какой-то код самостоятельно.   -  person Daniel    schedule 05.11.2013


Ответы (2)


Phonegap поддерживает обновление вашего GPS в реальном времени.

Вот прямая ссылка:

http://docs.phonegap.com/en/3.1.0/cordova_geolocation_geolocation.md.html#geolocation.watchPosition

Обычно это называется «положение просмотра», и вы можете установить таймер обновления самостоятельно.

Относительно включения GPS во время выполнения.

Попробуйте просто позвонить navigator.geolocation.watchPosition().

Не забудьте предоставить доступ к геолокации в вашем config.xml, но я думаю, вы это знаете ;)

Я надеюсь, что это помогло.

person Daniel    schedule 05.11.2013
comment
Я изменю свой класс обслуживания, который абстрагирует вызовы геолокации, чтобы использовать watchPosition() и свяжусь с вами. - person mondeeds; 05.11.2013
comment
Просто примечание: вам не нужно устанавливать таймер обновления для watchPosition() — функция успеха будет вызываться и передавать новую позицию каждый раз, когда ОС получает обновление позиции от оборудования GPS-приемника. - person DaveAlden; 05.11.2013
comment
watchPosition() срабатывает при включении GPS? - person mondeeds; 05.11.2013
comment
Я сделал плагин для ядра GPS (ios 8/android): github.com/vitorventurin/CordovaGPS - person Vitor Venturin; 18.12.2014
comment
Я попробовал это решение, но watchPosition() по-прежнему требует перезагрузки приложения, чтобы обнаружить, что GPS был включен во время работы приложения. Кроме того, watchPosition разряжает вашу батарею, поскольку продолжает работать, несмотря на переключение на другие маршруты. - person Ruben; 21.03.2017
comment
По моему опыту, watchPosition не вызывала функцию ошибки при отключении локации, а просто прекращала запускать события. Поэтому мне приходилось периодически вызывать getPosition, чтобы поймать момент, когда местоположение становится недоступным (Cordova 7 на Android). - person C-F; 24.04.2018
comment
Этот ответ не решает поставленный вопрос. Это ответ на вопрос Как постоянно отслеживать положение пользователя с помощью Cordova? а не Как включить GPS во время выполнения - person Marcello Kad; 17.05.2018

после долгой борьбы я нашел плагин, который смог помочь мне с той же проблемой

https://github.com/nishantsharmajecrc/cordova-dialog-gps

  function calldialog() {
 document.addEventListener("deviceready",function() {
 cordova.dialogGPS("Your GPS is Disabled, this app needs to be enable to          works.",//message
            "Use GPS, with wifi or 3G.",//description
            function(buttonIndex){//callback
              switch(buttonIndex) {
                case 0: break;//cancel
                case 1: break;//neutro option
                case 2: break;//user go to configuration
              }},
              "Please Turn on GPS",//title
              ["Cancel","Later","Go"]);//buttons
  });
  }
person Alfred Alfizo Mosima    schedule 24.04.2016
comment
Похоже, этот плагин поддерживает только Android и никакие другие платформы. - person C-F; 24.04.2018
comment
этот плагин устарел и был только для андроида. С Cordova 8 структура файловой системы изменилась. Не устанавливайте его, потому что вам нужно вручную удалить все плагины внутри package.json, папки плагинов, config.xml и так далее. - person Marcello Kad; 17.05.2018