Проблема рендеринга геолокации - PullRequest
0 голосов
/ 08 октября 2018

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

<script type="text/livescript">
  var x = document.getElementById("demo");
  function getLocation() {
      if (navigator.geolocation) {
          navigator.geolocation.watchPosition(showPosition);
      } else {
          x.innerHTML = "Geolocation is not supported by this browser.";}
      }

  function showPosition(position) {
    //  x.innerHTML="Latitude: " + position.coords.latitude +
    //  "<br>Longitude: " + position.coords.longitude;
      var latitude = document.getElementById('latitude');
      var longitude = document.getElementById('longitude');
      latitude.value=position.coords.latitude;
      longitude.value=position.coords.longitude;
  }
  </script>

Вызов с помощью кнопки

<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal">&times; 
</button>
    <h4 class="modal-title">Check IN Details</h4>
  </div>

Когда я нажимаю на кнопку в первый раз, браузер запрашивает всплывающее окно «Разрешить местоположение» и отображает широту / долготу, ия показываю их в текстовом поле.И будет один значок местоположения, который будет сгенерирован в URL, говорящем, что этот сайт использует местоположение

Когда я снова нажимаю на кнопку, чтобы получить местоположение, которое оно висит, я имею в виду, что мне нужно закрыть браузер инажмите кнопку, чтобы получить широту / долготу.

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

Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 08 октября 2018

Пожалуйста, смотрите код ниже, если это то, что вам нужно, я просто использовал метод getCurrentLocation вместо метода watchPosition, потому что watchPosition будет вызываться автоматически каждый раз, когда изменяется положение устройства.Так как вам нужно вручную вызывать функцию для получения текущего местоположения, вы должны использовать метод getCurrentLocation и передавать параметр, имеющий MaximumAge: 0, чтобы получить новый или не будет использовать позицию в кэше и будет пытаться получить реальную текущую позицию.Затем передача тайм-аута со значением «Бесконечность» означает, что getCurrentPosition () не вернется, пока позиция не станет доступной.Смотри https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions

<!DOCTYPE html>
    <html>
        <head></head>
        <body>
          <button onclick="getLocation()">Try It</button>

          <p id="demo"></p>
        </body>
    <script>

    var x = document.getElementById("demo");

    function getLocation() {
        var options = {maximumAge: 0, timeout: Infinity, enableHighAccuracy: true};

        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition, errorHandler, options);
        } else {
            x.innerHTML = "Geolocation is not supported by this browser.";
        }
    }

    function showPosition(position) {
        x.innerHTML = "Latitude: " + position.coords.latitude +
        "<br>Longitude: " + position.coords.longitude;
    }

    function errorHandler (err) {
      //TODO: Set your rules what will happen when error occured
      console.log(err);
    }
    </script>
    </html>
...