Геолокация не работает в Safari 5.x в Windows 7 / XP - PullRequest
6 голосов
/ 10 сентября 2010

Я работаю над приложением, которое использует стандартный API геолокации W3C, но я не могу заставить его работать в Safari на моем ПК с Windows 7 и XP. Он отлично работает на моем iPad и iPhone. Он также отлично работает на Chrome (5, 6, 7 и сборке Canary) и на Firefox (3.6). У меня нет Mac, поэтому я не могу проверить его на этом. IE пока не поддерживает геолокацию, так что это тоже покрыто.

Я создал урезанную версию и размещаю ее на Google Apps Engine, чтобы вы могли взглянуть на код: http://html5 -geolocator.appspot.com / . Весь (упрощенный) javascript находится в html, поэтому вы должны иметь возможность щелкать правой кнопкой мыши и отлаживать / просматривать исходный код.

Это довольно прямое преобразование примеров в Google Map API DevGuide . Интересно, что примеры, которые размещает Google, также НЕ РАБОТАЮТ в Safari 5.0.x на Windows 7 (но они отлично работают на всех этих других платформах, так же как и мое приложение), например, http://code.google.com/apis/maps/documentation/javascript/examples/map-geolocation.html показывает то же самое как приложение, карта не отображается, веб-страница остается серой.

Через некоторую отладку (alert («Я здесь») :-) кажется, что в Safari он выполняет navigator.geolocation.getCurrentPosition (myCallback), но, кажется, он никогда не достигает myCallback ... как будто он никогда возвращается из getCurrentPosition. Я также видел, что если я оставляю окно браузера открытым на ночь, когда я возвращаюсь к нему утром, появляется предупреждение и карта (хотя и не всегда). Я также попытался добавить errorCallback navigator.geolocation.getCurrentPosition (myCallback, errorCallback), но он также никогда не выполняет это, снова предлагая никогда не возвращаться из вызова getCurrentPosition.

Почему это происходит?

EDIT: Только что провёл ещё какое-то тестирование, я добавил опцию тайм-аута (navigator.geolocation.getCurrentPosition (myCallback, errorCallback, {timeout: 5000});), и, действительно, время ожидания истекло, независимо от того, насколько высоко я его установил. никогда не возвращается из службы геолокации Google, но почему?

1 Ответ

3 голосов
/ 15 ноября 2010

Попробуйте включить свой Wi-Fi. Похоже, что Safari использует Wi-Fi соединение для работы. У меня были точно такие же проблемы, я включил соединение Wi-Fi, и оно отлично работает.

Я сейчас смотрю, как это обнаружить - обновлю, если найду решение

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