Используемый вами код работает.
То, о чем говорит @Maheshvirus, это плагин ' cordova-plugin-request-location-precision ', который фактически позволяет вам предлагать пользователю включить высокую точность определения местоположения (а также проверить и проверить, он включен в первую очередь) для GPS, который будет «использовать GPS, WiFi, Bluetooth или сотовые сети для определения местоположения». Я использую тот же плагин в своих приложениях, он работает хорошо.
Из-за быстрого поиска в Google кажется, что IOS не имеет режима высокой точности, потому что по умолчанию IOS использует GPS, Wi-Fi, Bluetooth и т. Д. Для определения вашего местоположения ... вы не можете включать и выключать его, как Android, что объясняет почему IOS всегда так быстро узнает, где вы находитесь. Таким образом, на устройствах Android вам нужно предложить пользователю включить его с помощью плагина, упомянутого @Maheshvirus. Который затем должен всегда оставаться включенным, если пользователь не изменит свой режим на режим экономии энергии или только на устройстве.
ПК должен иметь намного более быстрый Интернет и не должен иметь ограничений по объему данных или серьезного ограничения (если сетевой нейтралитет полностью не исчез или вы находитесь в каком-то другом ужасном месте), поэтому ваш браузер должен быть в состоянии довольно легко и быстро найти вас через модем / маршрутизатор, к которому вы подключены - см. ответ этого сообщения для получения более подробной информации.
Решение
Я слишком устал сейчас, чтобы получить вам нужный пример рабочего кода, но использование Geolocation.watchPosition () вместо getCurrentPosition () позволит вам получить местоположение намного быстрее по моему опыту используя его - и этот пользователь, кажется, проверил его .
WatchPosition 'используется для регистрации функции-обработчика, которая будет вызываться автоматически при каждом изменении положения устройства'. Функция watchPosition также используется почти точно так же, как getCurrentPosition, за исключением того, что когда она вызывается, вы должны назначить ей идентификатор и использовать Geolocation.clearwatch (idname), когда закончите. Вот документы для watchPosition () . Так что круто то, что если пользователь перемещается или служба определения местоположения телефонов считает, что он перемещен, ему не нужно будет набирать еще один вызов на устройство GPS (что заставляет его так долго), поскольку GPS уже слушать.
Извините, я не предложил исправления кода, но надеюсь, что эти данные помогут. С этой проблемой я также столкнулся, когда использовал getCurrentPosition на разных устройствах. У вас не должно возникнуть проблем с реализацией watchPosition (), и вы должны сразу увидеть улучшения латентной локации андроида - особенно если вы заставите пользователя включить режим высокой точности определения местоположения с этим плагином ' cordova-plugin-request -распределение точности '