我正在创建一个地图应用程序,其中一个设备每10秒向一个web数据库发送一次坐标。我已经把它们标在谷歌地图上了。但问题是我需要每5秒重新加载一次地图来加载新的坐标。为此,我可以使用setTimeout()javascript函数。我不确定是否可以使用此查询轮询最后插入的行。。SELECT lat, lon FROM map ORDER BY id DESC LIMIT 1('id'自动递增)。我知道也许会有更好的办法。任何帮助都将不胜感激。谢谢。到目前为止这是我的代码。

<?php $db = mysql_connect("localhost","root","qwerty");
 mysql_select_db("test", $db); ?>

<script type="text/javascript"
  src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
  function initialize() {
    var myLatlng = new google.maps.LatLng(37.386339,-122.085823);
    var myOptions = {
    zoom: 13,
    center: myLatlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    };

    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    var WalkingPathCoordinates = [];
    <?php  $coordinates="SELECT * FROM map";
            $Result1 = mysql_query($coordinates, $db)or die(mysql_error());
            while(list($id,$lat,$long) = mysql_fetch_row($Result1))
                {
                echo "var latlng = new google.maps.LatLng(".$lat.",".$long.")\n";
                echo "WalkingPathCoordinates.push(latlng);\n";
                }
    ?>
var WalkingPath = new google.maps.Polyline({
    path: WalkingPathCoordinates,
    strokeColor: "#FF0000",
    strokeOpacity: 1.0,
    strokeWeight: 2
    });

WalkingPath.setMap(map);
  }
</script>

最佳答案

如果不想刷新整个映射,可以将初始化函数分为两个函数。例如,您可以有一个名为initializeMap()的函数来完成在页面上显示地图的部分,如下所示:

var map

function initializeMap() {
    var myLatlng = new google.maps.LatLng(37.386339,-122.085823);
    var myOptions = {
        zoom: 13,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}

另一个函数可以称为refreshMarkers()并执行与标记相关的操作。在initializeMap()函数外部声明map时,可以从refreshMarkers()函数访问它。
initializeMap()函数应该只调用一次,而refreshMarker()应该发送到setTimeout(),就像在示例中使用initialize一样。这样,每次超时都只会执行refreshMarker()操作。
不幸的是,我还没有机会测试这个,所以我不确定您是否还需要删除refreshMarker函数中的旧标记。
如果有帮助的话告诉我

09-27 14:05