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

Posted

技术标签:

【中文标题】如何设置每 10 秒刷新一次位置的间隔?【英文标题】:How can I set an interval to refresh location every 10 seconds? 【发布时间】:2018-10-19 09:07:12 【问题描述】:

我有这段运行良好的代码,我想每 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);
  

【问题讨论】:

每 10 秒更新一次的任何理由?由于 GMaps 对 API 请求收费,这将使您发送比需要更多的请求 = 更高的成本。如果发生了变化,更新不是更有意义吗? 我想用 html5 和 sql 使用地图制作一个应用程序,我想发送当前位置以防我需要在地图上绘制标记并实时查看其他标记 如果你是新手,那么我明白你的方法,这并不容易。但是您应该稍后查看如何更新事件而不是固定时间。它将提高性能并降低成本。您只需要了解如何保持和更新应用的状态。 如果您正在观看位置变化,为什么不使用watchPosition() 函数而不是getCurrentPosition()? developer.mozilla.org/en-US/docs/Web/API/… 你们有什么推荐的? 【参考方案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);

【讨论】:

以上是关于如何设置每 10 秒刷新一次位置的间隔?的主要内容,如果未能解决你的问题,请参考以下文章

C# 要想给一个死循环设置循环时间间隔,每5秒循环一次。

python循环控制间隔。

固定间隔后获取纬度位置

如何在给定的时间间隔内自动刷新网页所有控件

Websocket 数据按一定时间间隔刷新

以固定的时间间隔执行for循环,例如。每5秒获取一次图[重复]