如何刷新只是特定的代码与javascript setTimeout


How to refresh just specific code with javascript setTimeout?

我有一个这样的代码:

<html>
<head>
<meta charset="utf-8">
<title>GPS Tracker</title>
<link rel="stylesheet" type="text/css" href="bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="view/style.css">
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
  function show_maps()
  {
    var div_peta = document.getElementById('kanvas');
    var tengah = new google.maps.LatLng(-8.801502,115.174794);
    var options = 
    {
      center : tengah,
      zoom : 14,
      mapTypeId : google.maps.MapTypeId.ROADMAP
    }
    //make map object
    var google_map = new google.maps.Map(div_peta,options);
  }
</script>
</head>
<body OnLoad="show_maps();">
</div>
<div class="container">
  <div class="row">
<div class="col-md-4"><div class="panel panel-default panel-body">
<p><b><h4>Tracking</h4></b><hr>
<form method="GET" action="../controller/location.php">
          <p><input class="btn btn-primary" type="submit" value="get location" style="width:280px"></a></p>
        </form>
      </div>
    </div>
    <div class="col-md-8">
      <div class="panel panel-default panel-body" style="height:490px">
           <div id="kanvas"> kanvas peta</div>
      </div>
</div>
  </div>
</div>

我想做一个GPS跟踪系统。获取位置的方法是通过短信。一旦点击"获取位置"按钮,询问位置的短信就会发送。所以,我需要刷新地图每秒钟,直到GPS跟踪器回复短信。这样我就可以用这些数据在谷歌地图上做一个标记。我不想刷新整个页面。我只想刷新一下谷歌地图。setTimeout有办法吗?谢谢你…

您可以试试下面的代码

var i = setInterval(show_maps, 1000);

如果你想停止间隔

clearInterval(i);

Demo

可以使用下面的结构。你的地图每5秒重新加载一次;

var mapsLoaded = false;
window.mapsCallback = function(){
    mapsLoaded = true;
    setInterval(function(){
        $(window).trigger('mapsLoaded');
    }, 5000);
}
window.loadMaps = function(){
    if(mapsLoaded) return window.mapsCallback();
    var script_tag = document.createElement('script');
    script_tag.setAttribute("type","text/javascript");
    script_tag.setAttribute("src","http://maps.google.com/maps/api/js?sensor=false&callback=mapsCallback");
    (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
}
$(document).ready(function(){
    function initialize(){
        var mapOptions = {
            zoom: 14,
            center: new google.maps.LatLng(47.3239, 5.0428),
            mapTypeId: google.maps.MapTypeId.ROADMAP};
        map = new google.maps.Map(document.getElementById('kanvas'),mapOptions);
    }
    $(window).bind('mapsLoaded', initialize);
    window.loadMaps();
});