Есть ли способ определить, есть ли на мобильном устройстве сервисы определения местоположения с поддержкой JavaScript? - PullRequest
4 голосов
/ 01 октября 2011

В настоящее время я использую Modernizr для определения, поддерживается ли геолокация для определенного устройства.Однако я хочу отобразить более конкретное сообщение об ошибке, если геолокация поддерживается, но пользователь отключил службы определения местоположения для своего устройства.

Я получаю жалобы на то, что геолокация не работает в поддерживаемых браузерах, когда вДело в том, что пользователь просто не включил свои.

Я знаю, что есть способы обнаружить это с помощью собственного мобильного кода, но есть ли способ сделать это с помощью JavaScript?Modernizr поддерживает это?

1 Ответ

5 голосов
/ 01 октября 2011

Ваш ошибка обратного вызова когда-либо срабатывает? Если у вас его нет, попробуйте добавить его. Если он никогда не срабатывает, вы можете установить тайм-аут для своей функции, чтобы, если он не получил разрешения в течение определенного периода времени, отображать уведомление.

Поскольку errorCallback никогда не срабатывает, если geo отключен, создайте оболочку для функции, которая создаст время ожидания для другой функции. Если какой-либо из обратных вызовов к API-интерфейсу срабатывает, удалите установленное время ожидания до его запуска.

var timeOutId;
function disabledGeoHandler(){...}
function show_map() {
    clearTimeout(timOutId);
    ...
}
function show_map_error() {
    clearTimeout(timOutId);
    ...
}
function lookup_location() {
  timeOutId = setTimeout(disabledGeoHandler, 1000);
  navigator.geolocation.getCurrentPosition(show_map, show_map_error);
}

На самом деле, вы можете просто использовать geo.js

...