Javascript 谷歌地图API-如何每2秒更新和刷新标记?

Javascript 谷歌地图API-如何每2秒更新和刷新标记?,javascript,php,json,google-maps-api-3,Javascript,Php,Json,Google Maps Api 3,我有这个“实时地图”,在我的游戏服务器上在线显示玩家。我添加了一个2秒的计时器,用来更新标记的位置,但它根本不起作用。我做错了什么 JavaScript: <div id="map-canvas"></div> var p_pos = <?php echo (empty($json_pos)) ? "" : $json_pos ?>; var mapType = new SanMapType(0, 1, function (zoom, x, y) {

我有这个“实时地图”,在我的游戏服务器上在线显示玩家。我添加了一个2秒的计时器,用来更新标记的位置,但它根本不起作用。我做错了什么

JavaScript:

<div id="map-canvas"></div>
var p_pos = <?php echo (empty($json_pos)) ? "" : $json_pos ?>;
var mapType = new SanMapType(0, 1, function (zoom, x, y) {
    return x == -1 && y == -1 
    ? "images/tiles/map.outer.png" 
    : "images/tiles/map." + zoom + "." + x + "." + y + ".png";//Where the tiles are located
});

var satType = new SanMapType(0, 3, function (zoom, x, y) {
    return x == -1 && y == -1 
    ? null 
    : "images/tiles/sat." + zoom + "." + x + "." + y + ".png";//Where the tiles are located
});

var map = SanMap.createMap(document.getElementById('map-canvas'), 
    {'Map': mapType, 'Satellite': satType}, 2, SanMap.getLatLngFromPos(0,0), false, 'Satellite');
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(document.getElementById('map-legend'));
if(p_pos !== "")
{
    for (var i = 0; i < Object.keys(p_pos).length; i++) 
    {
        console.log(p_pos[i].online);
        if(p_pos[i].online == 1) createMarker(i); 
    }
}   
google.maps.event.addListener(map, 'click', function(event) {
    var pos = SanMap.getPosFromLatLng(event.latLng);
    console.log(pos.x + "," + pos.y);
});                         
function createMarker(id)
{
    var p_windows = new google.maps.InfoWindow({
        content: "<p>"+p_pos[id].name+" <b>(ID: "+id+")</b><br>Ping: "+p_pos[id].ping+"<br>X: "+p_pos[id].x+"<br>Y: "+p_pos[id].y+"</p>"
    });
    var p_marker = new google.maps.Marker({
        position: SanMap.getLatLngFromPos(p_pos[id].x, p_pos[id].y),
        map: map,
        icon: "https://wiki.sa-mp.com/wroot/images2/8/81/Icon_0.gif"
    });
    google.maps.event.addListener(p_marker, 'click', function() {
        p_windows.open(map,p_marker);
    });
}

var p_pos=;
var mapType=新SanMapType(0,1,函数(缩放,x,y){
返回x==-1&&y==-1
?“图像/tiles/map.outer.png”
:“images/tiles/map.”+zoom+“+x+”+y+“.png”;//tiles的位置
});
var satType=新SanMapType(0,3,函数(缩放,x,y){
返回x==-1&&y==-1
无效的
:“images/tiles/sat.“+zoom+”+x+“+y+”.png”//tiles的位置
});
var map=SanMap.createMap(document.getElementById('map-canvas'),
{'Map':mapType,'Satellite':satType},2,SanMap.getLatLngFromPos(0,0),false,'Satellite');
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(document.getElementById('map-legend');
如果(p_pos!==“”)
{
对于(var i=0;iPing:+p\u pos[id]。Ping+”
X:+p\u pos[id]。X+”
Y:+p\u pos[id]。Y+“

” }); var p_marker=新的google.maps.marker({ 位置:SanMap.getLatLngFromPos(p_pos[id].x,p_pos[id].y), 地图:地图, 图标:“https://wiki.sa-mp.com/wroot/images2/8/81/Icon_0.gif" }); google.maps.event.addListener(p_标记,'click',函数(){ p_窗口。打开(地图、p_标记); }); }
计时器:

<script>
$(function () {
    setTimeout(function () { $('#map-canvas').load(initialize); }, 1000);
})
</script>

$(函数(){
setTimeout(函数(){$('#映射画布').load(initialize);},1000);
})

jQuery
load
函数用于获取AJAX请求的URL。您正在传递它,我假设它是一个变量,
initialize
,但在您的问题中,其他任何地方都没有引用它。如果你发布javascript的客户端版本,而不是你用来创建javascript的PHP,这也会让你的生活变得更加轻松,这与你所问的问题没有任何区别。客户端javascript文件相当大,我不确定是否应该在这里发布它。我的意思是,看到服务器端代码(如
var p_pos=)毫无帮助。。。有用的是查看在客户端呈现时会变成什么,例如
var p_pos='foobar'它渲染的所有内容都是地图和标记。该文件从另一台服务器获取一个.json文件,然后将它们放在地图上。我发现这可能会有所帮助。jQuery
load
函数用于获取AJAX请求的URL。您正在传递它,我假设它是一个变量,
initialize
,但在您的问题中,其他任何地方都没有引用它。如果你发布javascript的客户端版本,而不是你用来创建javascript的PHP,这也会让你的生活变得更加轻松,这与你所问的问题没有任何区别。客户端javascript文件相当大,我不确定是否应该在这里发布它。我的意思是,看到服务器端代码(如
var p_pos=)毫无帮助。。。有用的是查看在客户端呈现时会变成什么,例如
var p_pos='foobar'它渲染的所有内容都是地图和标记。该文件从另一台服务器获取一个.json文件,然后将它们放在地图上。实际上没有做任何其他事情。我发现这可能会有所帮助。