2013-05-18 3 views
1

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

if (navigator.geolocation) { 

navigator.geolocation.getCurrentPosition(function(position){ 

var latitude = position.coords.latitude; 
var longitude = position.coords.longitude; 
var latNum = parseFloat(latitude); 
var longNum = parseFloat(longitude); 

Это сразу же следует вложенной куча, если ... иначе, если заявления, которые вызывают различные функции в зависимости от местоположения пользователя в одном из целого ряда определенных областей и заявления другого, чтобы поймать условие, когда пользователь не находится в каком-либо определенном месте. Эта часть работает отлично, включая условие «else» в конце. Когда он падает, это если устройство пользователя не поддерживает геолокацию, или пользователь отказывает в доступе к данным о местоположении при появлении запроса.

Код предполагается захватить это просто:

} else { 
    function10(); 
} 

Я попытался это в FF, Safari и Chrome с теми же результатами: если отключить службы определения местоположения или отказать в доступе в ответ на запрос, окончательное «другое 'не запускается.

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

Я был бы искренне благодарен за любые подсказки, где я ошибся.

ответ

1

OK - проблема решена! Я не уверен, если я чувствую себя просто глупо или просветленным, но в пользу кого-либо другого с той же проблемой, вот решение:

if (navigator.geolocation) { 

navigator.geolocation.getCurrentPosition(function(position){ 

// Do something here if you get position data 

    }, 

function() { 

// Do something else if you don't get any position data 
      } 
     ); 
    } 

Где я пошел не так, я думаю, что мне нужно, чтобы посмотреть для отказа function(position), а не отсутствия агента, включенного в геолокацию. Вторая функция в том же условии if обеспечивает действие в случае отсутствия данных о местоположении, возвращаемых из браузера, независимо от причины. Заключительное выражение «else» в исходном коде (выше) будет инициировано только на устройстве, не имеющем возможности геолокации.

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

Благодаря this answer на SO для указания меня в правильном направлении.

Смежные вопросы