navigator.geolocation.getCurrentPosition иногда работает, иногда не - PullRequest
201 голосов
/ 03 августа 2010

Итак, у меня есть довольно простой JS-файл, использующий jammy navigator.geolocation.getCurrentPosition.

$(document).ready(function(){
  $("#business-locate, #people-locate").click(function() {
    navigator.geolocation.getCurrentPosition(foundLocation, noLocation);
  });

  navigator.geolocation.getCurrentPosition(foundLocation, noLocation);

  function foundLocation(position) {
    var lat = position.coords.latitude;
    var lon = position.coords.longitude;
    var userLocation = lat + ', ' + lon;
    $("#business-current-location, #people-current-location").remove();
    $("#Near-Me")
      .watermark("Current Location")
      .after("<input type='hidden' name='business-current-location' id='business-current-location' value='"+userLocation+"' />");
    $("#people-Near-Me")
      .watermark("Current Location")
      .after("<input type='hidden' name='people-current-location' id='people-current-location' value='"+userLocation+"' />");
  }
  function noLocation() {
    $("#Near-Me").watermark("Could not find location");
    $("#people-Near-Me").watermark("Could not find location");
  }
})//end DocReady

По сути, здесь мы получаем текущую позицию, если она получена, два "водяных знака"помещается в два поля с надписью «Текущая позиция», и создаются два скрытых поля с данными в виде лат-длин в качестве их значения (они удаляются в начале, поэтому они не дублируются каждый раз).Есть также две кнопки, к которым привязана функция щелчка, которая делает то же самое.К сожалению, каждый третий раз или около того, это работает.В чем здесь проблема ???

Ответы [ 22 ]

0 голосов
/ 14 августа 2015

Спасибо всем за их вклад, это помогло мне.

В дополнение к необходимости использовать watchPosition () вместо getCurrentPosition (), я также обнаружил, что мне нужно переместить вызов изнутри document.ready () в заголовок.

0 голосов
/ 13 ноября 2014

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

...