如何设置每10秒刷新一次位置的间隔?

时间:2018-10-19 09:07:12

标签: javascript html5 google-maps geolocation

我有这样的代码,它工作正常,我想每10秒钟“刷新”该位置,我进行了搜索并尝试过,但找不到方法

  var map, infoWindow;
  function initMap() {
    map = new google.maps.Map(document.getElementById('map'), {
      center: {lat: -34.397, lng: 150.644},
      zoom: 6
    });
    infoWindow = new google.maps.InfoWindow;



    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(function(position) {
        var pos = {
          lat: position.coords.latitude,
          lng: position.coords.longitude
        }

        infoWindow.setPosition(pos);
        infoWindow.setContent('Location found.');
        infoWindow.open(map);
        map.setCenter(pos);

我认为我应该在这里设置间隔,但是我不知道如何。 感谢您的帮助

      }, function() {
        handleLocationError(true, infoWindow, map.getCenter());
        interval
      });
    } else {
      // Browser doesn't support Geolocation
      handleLocationError(false, infoWindow, map.getCenter());
    }
  }

  function handleLocationError(browserHasGeolocation, infoWindow, pos) {
    infoWindow.setPosition(pos);
    infoWindow.setContent(browserHasGeolocation ?
   'Error: The Geolocation service failed.' :
   'Error: Your browser doesn't support geolocation.');
    infoWindow.open(map);
  }

1 个答案:

答案 0 :(得分:1)

我希望以下解决方案能给您带来启发,谢谢。

var map, infoWindow;

function initMap() {
  map = new google.maps.Map(document.getElementById('map'), {
    center: {
      lat: -34.397,
      lng: 150.644
    },
    zoom: 6
  });
  infoWindow = new google.maps.InfoWindow;

  getCurrentPosition(map, infoWindow)


}

function getCurrentPosition(map, infoWindow) {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
      var pos = {
        lat: position.coords.latitude,
        lng: position.coords.longitude
      }

      infoWindow.setPosition(pos);
      infoWindow.setContent('Location found.');
      infoWindow.open(map);
      map.setCenter(pos);
      setTimeout(getCurrentPosition(map, infoWindow), 10000);

    }, function() {
      handleLocationError(true, infoWindow, map.getCenter());
      interval
    });
  } else {
    // Browser doesn't support Geolocation
    handleLocationError(false, infoWindow, map.getCenter());
  }
}


function handleLocationError(browserHasGeolocation, infoWindow, pos) {
  infoWindow.setPosition(pos);
  infoWindow.setContent(browserHasGeolocation ?
    'Error: The Geolocation service failed.' :
    "Error: Your browser doesn't support geolocation.");
  infoWindow.open(map);
}