Почему Geolocation в Mobile Safari менее точен, чем местоположение в нативном приложении? - PullRequest
6 голосов
/ 22 июля 2011

Я использую Geolocation API (часто называемый «HTML5 Geolocation»), чтобы получить текущую позицию пользователя.Он обновляется автоматически, если вы двигаетесь (проверяется каждую секунду).В первую очередь предназначен (и в настоящее время тестируется) на iPhone, но должен работать и на других мобильных устройствах.Вы можете увидеть пример здесь:

http://jsbin.com/uyoyey/

Точность, которую вы можете видеть в каждой строке после трубы, составляет около 3000 (метров), когда я тестирую (снаружи),Что довольно плохо, очевидно.Нативное приложение Maps на моем iPhone намного точнее.Приблизительно от 10 до 30 метров (при взгляде на карту и на то, где я стою. Проверка значений long и lat в другом приложении также дает более точные цифры.

Когда я сейчас переключаюсь назад на Safari, точность скачков точностиот 10 до 30, но через секунду возвращается к 3000.

Вопросы:

  1. Можете ли вы повторить это поведение?
  2. ПочемуВо-первых, это местоположение?
  3. Есть ли разница между доступом к GPS-данным через Geolocation и CLLocationManager (который, я думаю, используется нативными приложениями)?

Спасибо!

Обновление 1:
Я получаю более точные результаты при тестировании в других местах (более крупный город), но теперь мне интересно, используют ли собственные приложения также отслеживание движения для обновленияЭто объясняет, почему приложение «Карты» может отслеживать мои шаги, в то время как Safari не распознает их.

Обновление 2 (03.08.11):
В разговоре по электронной почте с Петр-Поль Кох он написал, что Safari в основном использует Wi-Fi для геолокации, чтобы сохранить время автономной работы.Это может объяснить различия.
Я все еще не совсем уверен, что происходит.

Ответы [ 2 ]

4 голосов
/ 12 января 2012

Старый: Вот результат теста для функции getCurrentPosition с отключенным Wi-Fi на Android 2.2, iOS4 и iOS5.

Как в браузере Android, так и в iOS 4 Safari, я получаю уровень точности GPS в размере 1000 метров. Но на iOS 5 Safari я могу снизить точность до 5 метров. Кажется, GPS улучшился в iOS 5, но это всего лишь маленький кусочек рынка. В целом, разработка веб-приложения, основанного на точном считывании GPS, все еще не годится.

Что-то, что я обнаружил во время тестирования - Android-браузер GPS перестает отвечать после примерно 70 вызовов getCurrentLocation. Это может быть проблема конкретного устройства, но это еще один ненадежный фактор в функциональности GPS на основе браузера.

Обновление: Я тестировал с вызовом функции watchPosition , и он дал гораздо более точный результат на Android и iOS4. Это путь ... Пример кода: http://jsbin.com/ugebif/3

2 голосов
/ 23 июля 2011
  1. Не могу, но только из-за лени :)

  2. Я не уверен, но подозреваю, что Safari использует не-GPS части определения местоположения iPhone.

  3. Опять же, я не уверен, но «Погружение в HTML5» упоминает, что API геолокации HTML5 позволяет передавать PositionOptions объект в getCurrentPosition, и этот объект имеет enableHighAccuracy собственность.

    Установка этого значения на true может заставить Safari использовать то же высокоточное позиционирование, что и CLLocationManager. (Я сам не имел опыта в этом.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...