Javascript 使用ajax和setTimeOut更新地图标记
我有一个Javascript 使用ajax和setTimeOut更新地图标记,javascript,php,jquery,ajax,google-maps-api-3,Javascript,Php,Jquery,Ajax,Google Maps Api 3,我有一个googlemapapi设置,它为驱动程序(多个)位置设置了标记,尽管我很难通过ajax/php每隔x秒更新一次标记 这就是我目前所拥有的。有人能看出我做错了什么吗 我已经搜索了许多示例和教程。我还没找到我需要的东西 更新:Ajax确实成功地从PHP抓取数据,只是没有移动标记。。。也许数据的格式不对 更新:包含init()代码 PHP代码: $sqld = "SELECT * FROM rwxoq_Drivers"; $resultd = mysqli_query($co
googlemapapi
设置,它为驱动程序(多个)
位置设置了标记,尽管我很难通过ajax/php每隔x秒更新一次标记
这就是我目前所拥有的。有人能看出我做错了什么吗
我已经搜索了许多示例和教程。我还没找到我需要的东西
更新:Ajax确实成功地从PHP抓取数据,只是没有移动标记。。。也许数据的格式不对
更新:包含init()代码
PHP代码:
$sqld = "SELECT * FROM rwxoq_Drivers";
$resultd = mysqli_query($conn, $sqld);
while($rowd = mysqli_fetch_assoc($resultd)) {
list($time, $lat, $long) = explode("*", $rowd{LastGPS});
if ($time > (time() - 600)) {
$sqlu = "SELECT * FROM rwxoq_users WHERE username = '".$rowd{Driver_ID}."'";
$resultu = mysqli_query($conn, $sqlu);
while($rowu = mysqli_fetch_assoc($resultu)) {
$driver_id = $rowd{Driver_ID};
$driver_name = $rowu{name};
$driver_contact = $rowd{Phone};
$dir = "/var/www/autoflora_net/driver/profile/";
//echo $dir . $driver_id.'/png';
if (file_exists($dir . $driver_id.'.png')) {
$driver_img = '/driver/profile/'.$driver_id.'.png';
} else {
$driver_img = '/driver/profile/noimage.png';
}
$count++;
if ($count > 1) echo ", ";
echo '["'.$driver_id.'", "'.$driver_name.'", "'.$driver_contact.'", "'.$driver_img.'", "'.$lat.'", "'.$long.'"]';
}
}
}
JS代码:
function initialize() {
var options = {
componentRestrictions: {country: "au"}
};
directionsDisplay = new google.maps.DirectionsRenderer();
var melbourne = new google.maps.LatLng(-31.953512, 115.857048);
var myOptions = {
zoom:12,
mapTypeId: google.maps.MapTypeId.ROADMAP,
center: melbourne
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
directionsDisplay.setMap(map);
geocoder = new google.maps.Geocoder();
for (d = 0; d < drivers.length; d++) {
drivermarkers(drivers, d);
//usleep(1000000);
}
for (i = 0; i < locations.length; i++) {
geocodeAddress(locations, i);
//usleep(1000000);
}
}
function fetchDrivers (){
var markers = [];
$.ajax({
url: "driver/drivergps.php",
type : 'GET',
dataType: 'text',
success : function(data) {
// Loop through our array of markers & place each one on the map
for( i = 0; i < data.length; i++ ) {
var myLatlng = new google.maps.LatLng(data[i][4],data[i][5]);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title: 'Hello World!'
}); /* <----- AT THIS POINT, MARKER IS CREATED AND PLACED ON THE MAP BY SETTING "map" PROPERTY */
markers.push(marker); /* <----- HERE YOU ARE STORING THEM, AND YOU CAN ACCESS THEM LATER IN YOUR FUNCTION */
}
console.log(data);
}
,
error: function(){
/// traiter les erreur
},
async : true
});
//window.setTimeout(fetchDrivers(), 10000);
}
window.setTimeout(fetchDrivers(), 10000);
function drivermarkers(drivers, d) {
var id = drivers[d][0];
var name = drivers[d][1];
var contact = drivers[d][2];
var img = drivers[d][3];
var lat = drivers[d][4];
var long = drivers[d][5];
var drivermarker = new google.maps.Marker({
label: id,
icon: '/images/Furgoneta.png',
map: map,
position: new google.maps.LatLng(drivers[d][4], drivers[d][5]),
title: name,
animation: google.maps.Animation.DROP,
})
infoWindow(drivermarker, map, id, name, img);
bounds.extend(drivermarker.getPosition());
map.fitBounds(bounds);
}
函数初始化(){
变量选项={
组成部分限制:{国家:“非盟”}
};
directionsDisplay=new google.maps.DirectionsRenderer();
var melbourne=new google.maps.LatLng(-31.953512115.857048);
变量myOptions={
缩放:12,
mapTypeId:google.maps.mapTypeId.ROADMAP,
中心:墨尔本
}
map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
方向显示.setMap(地图);
geocoder=新的google.maps.geocoder();
对于(d=0;d })试试这个:setTimeout(fetchDrivers,10000);不确定它是否解决了所有问题,但这必须是doneThanks。这就是“window.setTimeout(fetchDrivers(),10000);”doesHow你正在初始化映射吗?
?请提供一个例子来说明这个问题。更新的init函数有人有什么想法吗??