我正在创建一个地图应用程序,其中一个设备每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函数中的旧标记。
如果有帮助的话告诉我