当我每1分钟加载地图时如何跟踪地图上的当前位置,但是现在每1分钟后地图位置重定向到默认位置.
这是我的code.i每1分钟调用加载函数,我从mapajax1.PHP文件中获取数据.我希望保留我在地图上的最后位置,因为我跟踪驱动程序
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script>
<script src="http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script type="text/javascript">
function load() {
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng("<?PHP echo $lat;?>", "<?PHP echo $lng;?>"),
zoom: 5,
mapTypeId: 'roadmap'
});
var infoWindow = new google.maps.InfoWindow;
// Change this depending on the name of your PHP file
downloadUrl("mapajax1.PHP", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var email = markers[i].getAttribute("email");
var phone = markers[i].getAttribute("phone");
var status = markers[i].getAttribute("status");
var type = markers[i].getAttribute("type");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var html = "<b>" + name + "</b> <br/>" + email+ "</b> <br/>" + phone+ "</b> <br/>" + status;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon
});
bindInfoWindow(marker, map, infoWindow, html);
}
});
}
setInterval(function(){
load()
}, 60000);
</script>
解决方法:
在调用load()函数之前,需要在地图上保存最后一个位置.因此,您的代码每次都会返回初始位置.
这是一个示例代码,地图每5秒加载一次,地图上有最后一个位置.
var lat = -27.4; //<?PHP echo $lat;?>
var lng = 153.023; //<?PHP echo $lng;?>
function load() {
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(lat, lng),
zoom: 5,
mapTypeId: 'roadmap'
});
//....... rest of code
map.addListener('center_changed', function() {
lat = map.getCenter().lat();
lng = map.getCenter().lng();
});
}
setInterval(function() {
load()
}, 5000);
map.addListener('center_changed', function() {
lat = map.getCenter().lat();
lng = map.getCenter().lng();
});