实时mySQL、PHP谷歌地图API更新
我有一个android应用程序在1秒内发送gps坐标。间隔到php,然后是服务器上的mysql。我有一个网站,可以在谷歌地图上实时跟踪设备的位置。问题是,当我调用php脚本在mysql中查询新坐标时,它第一次运行得非常完美,并为我提供了在google maps上使用的最新坐标,但在第一次循环之后,它会继续为我提供相同的值,即使数据库已经更新实时mySQL、PHP谷歌地图API更新,php,javascript,google-maps-api-3,Php,Javascript,Google Maps Api 3,我有一个android应用程序在1秒内发送gps坐标。间隔到php,然后是服务器上的mysql。我有一个网站,可以在谷歌地图上实时跟踪设备的位置。问题是,当我调用php脚本在mysql中查询新坐标时,它第一次运行得非常完美,并为我提供了在google maps上使用的最新坐标,但在第一次循环之后,它会继续为我提供相同的值,即使数据库已经更新 <html xmlns="http://www.w3.org/1999/xhtml"> <head>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Horse Tracker © 2013 Abiapps</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link type="text/css" href="style.css" rel="stylesheet" media="all" />
<script type="text/javascript"src="http://maps.google.com/maps/api/js?********&sensor=false"></script>
<script type="text/javascript" src="map.js"></script>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
</head>
<body>
<h1>Horse Tracker © 2013 Abiapps </h1>
<input type="button" value="getValues" id="getValues" />
<input type="button" value="changeValues" id="changeValues" />
<div id="map"></div>
<script>
(function() {
window.onload = function() {
var mapDiv = document.getElementById('map');
var latlng = new google.maps.LatLng(35.694094,23.683620);
var options = {
center: latlng,
zoom: 4,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: true,
navigationControl: true,
navigationControlOptions: {
position: google.maps.ControlPosition.TOP_RIGHT
},
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
streetViewControl: false,
backgroundColor: '#0000ff'
};
var map = new google.maps.Map(mapDiv, options);
document.getElementById('getValues').onclick = function() {
alert('Current Zoom level is ' + map.getZoom());
alert('Current center is ' + map.getCenter());
}
document.getElementById('changeValues').onclick = function() {
var latLng = new google.maps.LatLng(<?php include 'getgps.inc.php';?>);
map.setCenter(latLng);
}
var a = 1;
function autoUpdate() {
a = a;
var latLng = new google.maps.LatLng(<?php include 'getgps.inc.php';?>);
map.setCenter(latLng);
alert('<?php include 'getgps.inc.php';?>');
setTimeout(autoUpdate, 1000);
}
autoUpdate();
}
})();
</script>
</body>
</html>
马追踪器©2013
马追踪器©2013
(功能(){
window.onload=函数(){
var mapDiv=document.getElementById('map');
var latlng=新的google.maps.latlng(35.694094,23.683620);
变量选项={
中心:拉特林,
缩放:4,
mapTypeId:google.maps.mapTypeId.ROADMAP,
mapTypeControl:true,
导航控制:对,
导航控制选项:{
位置:google.maps.ControlPosition.TOP\u右
},
mapTypeControlOptions:{
样式:google.maps.MapTypeControlStyle.DROPDOWN_菜单
},
街景控制:错误,
背景颜色:“#0000ff”
};
var map=new google.maps.map(mapDiv,options);
document.getElementById('getValues')。onclick=function(){
警报('当前缩放级别为'+map.getZoom());
警报('当前中心为'+map.getCenter());
}
document.getElementById('changeValues')。onclick=function(){
var latLng=new google.maps.latLng();
地图设置中心(latLng);
}
var a=1;
函数自动更新(){
a=a;
var latLng=new google.maps.latLng();
地图设置中心(latLng);
警报(“”);
设置超时(自动更新,1000);
}
自动更新();
}
})();
还有php代码
<?php
$host="localhost";
$username="*****";
$password="*****";
$db_name="horsetrack";
$tbl_name="gps"; //
$body = "";
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect server ");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM $tbl_name ORDER BY id DESC LIMIT 1 ";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){
$id = $rows['id'];
$datetime = $rows["datetime"];
$Rname = $rows["rider"];
$Rlat = $rows["lat"];
$Rlng = $rows["lng"];
$body = $Rlat.','.$Rlng;
}
echo $body;
mysql_close(); //close database
?>
我在alert()中得到相同的结果;作为第一个查询,即使我将行添加到数据库中,您是否意识到您的PHP代码是在服务器上执行的,而不是在客户机上执行的?执行此行时:
alert('<?php include 'getgps.inc.php';?>');
嵌入发送到客户端的javascript。当在客户机中执行autoUpdate()
函数时,PHP代码自消失后LONG,并且从未被客户机重新执行,因此'foo'
文本从未更改
每次都需要使用AJAX调用获取该文件输出的新副本,而不是简单地在生成页面时重新通知页面中嵌入的内容。该网站上有大量AJAX问题/答案,以及大量googleable教程。
alert('foo');