Должно быть, я делаю что-то не так, но я не могу найти, что... Я делаю страницу для веб-сайта своей компании, которая, среди прочего, предоставляет маршруты к сайтам вакансий в зависимости от текущего местоположения пользователя. Чтобы узнать их местоположение, я использую API геолокации, реализованный в Firefox (я тестировал с FF9, а теперь с FF10). На данный момент я тестирую пример кода из статьи Википедии:
<html>
<head>
<title>Geolocation Test</title>
<script type='text/javascript'>
var gl;
function displayPosition(position) {
var p = document.getElementById("p");
p.innerHTML = "<table border='1'><tr><th>Timestamp</th><td>" + position.timestamp +
"<tr><th>Latitude (WGS84)</th><td>" + position.coords.latitude + " deg</td></tr>" +
"<tr><th>Longitude (WGS84)</th><td>" + position.coords.longitude + " deg</td></tr></table>";
}
function displayError(positionError) {
alert("error " + positionError.code);
}
try {
if (typeof navigator.geolocation === 'undefined'){
gl = google.gears.factory.create('beta.geolocation');
} else {
gl = navigator.geolocation;
}
} catch(e) {}
if (gl) {
gl.getCurrentPosition(displayPosition, displayError);
} else {
alert("Geolocation services are not supported by your web browser.");
}
</script>
<body>
<p id='p'></p>
</body>
</html>
(скопируйте/вставьте это в текстовый редактор, сохраните как "whatever.html" и перетащите файл в браузер, чтобы открыть его)
Очень простой код, и он отлично работал в прошлый четверг, 26.01.12. (Я знаю, я знаю, люди говорят: «Это сработало вчера!», когда они на самом деле что-то напутали, но я клянусь, что это действительно так.) Однако с тех пор он выдает мне код ошибки 2, «POSITION_UNAVAILABLE». Я пробовал это на своем рабочем компьютере в своей рабочей сети, на своем рабочем и домашнем компьютерах при домашнем подключении к Интернету и на своем рабочем компьютере в точке доступа Wi-Fi с моего телефона, и он каждый раз выдает код ошибки 2.
Я подумал, может быть, я что-то напутал в своем браузере, или в настройках сети, или еще в чем-то (хотя я не мог представить, что именно), поэтому я попробовал следующий тест, который должен уметь делать каждый:
- Перейдите на сайт maps.google.com.
- Ищите «сиэтл» (или какое-то другое место, что угодно).
- Нажмите кнопку «Проложить маршрут».
- В полях направления слева «А» должно говорить «Мое местоположение», а «Б» должно говорить «Сиэтл». (Если в A не указано «Мое местоположение», введите «m» в поле, и в автоматически заполняющемся раскрывающемся списке обычно будет «Мое местоположение» в качестве первого варианта.)
- Нажмите кнопку «ПОЛУЧИТЬ МАРШРУТЫ».
- Firefox должен вывести сообщение о том, что maps.google.com хочет узнать ваше местоположение. Нажмите «Поделиться местоположением».
- Через пару секунд он должен либо показать вам направление откуда-то (там, где, по его мнению, находится ваш сервер) до Сиэтла, либо поле «А» должно стать пустым, и в нем будет написано «Не удалось найти ваше местоположение» или подобное вверху. карты.
И вот что странно: я еще никогда не заставлял это работать ни на одном компьютере. Мой рабочий компьютер (как на FF10, так и на Chrome), компьютеры моих коллег, мой домашний компьютер и рабочий компьютер моей подруги делают одно и то же; никто не может найти место.
Итак, мой вопрос: API местоположения не работает или что-то в этом роде, или я что-то напортачил? Мне не удалось найти в Интернете каких-либо указаний на сбой API, и кажется, что сбой маловероятен, но если да, то почему он не работает ни на одном компьютере, на котором я его пробовал? Может ли кто-нибудь еще повторить эти выводы или знает, что я делаю неправильно?
Спасибо!