Я пытаюсь использовать HTML5 Geolocation на следующем устройстве:поведение HTML5 геолокации на мобильном устройстве Android
- HTC One X
- Android 4.1.1
- WebKit/534,30 (встроенный версия браузера WebKit)
В встроенном браузере и последней версии веб-сайтов Chrome-приложений, использующих API-интерфейс HTML5 Geolocation, вы не сможете найти меня. Тем не менее, Firefox-приложение находит меня в течение нескольких секунд.
Это проблема, поскольку многоплатформенные платформы разработки приложений, например. PhoneGap, используйте WebViews (= встроенный браузер) в качестве контейнера для всего приложения. Кроме того, обычные пользователи не будут пытаться использовать разные браузеры, если веб-приложение не сможет сделать что-то, что оно может сделать.
Моя первая мысль заключалась в том, что мне нужно больше времени, чтобы найти меня, поэтому я установил тайм-аут 5 минут (см. Нижнюю часть сообщения). Но он просто достигнет этого таймаута, не найдя моего местоположения. Если я не устанавливаю тайм-аут, функции обратного вызова никогда не вызываются (я ждал, как час).
Моя вторая мысль заключалась в том, что, возможно, где-то на моем телефоне или в настройках моего браузера сайты, запрашивающие местоположение, были заблокированы. Это оказалось не так.
Итак, моя следующая мысль заключается в том, что, возможно, это проблема программирования в том смысле, что браузеры не следуют стандартам W3C, так что их API могут работать по-другому. Если да, то как мне получить местоположение на этом устройстве/в этих браузерах?
Поскольку даже хорошо закодированные веб-сайты, такие как Google, не могут получить мое местоположение в этих браузерах с использованием этого API, это может быть не проблема программирования. Если это действительно не так, на каком веб-сайте StackExchange я должен консультироваться? (Например, в случае, если это проблема устройства?)
API-интерфейс я использую (MDN):
navigator.geolocation.getCurrentPosition(success, error, options);
// Where success and error are callbacks and the options object may contain:
// enableHighAccuracy - boolean, speaks for itself
// timeout - maximum amount of milliseconds before one of the callbacks is called
// maximumAge - maximum age in milliseconds of cached location
Я пробовал вариант enableHighAccuracy: true, но это не имело никакого значения в моем случае. –