我正在使用Google Maps API v3为我的应用创建地图,以便在我们的网络直播中显示观看者。我们的想法是在新的查看器跳转到流上时在地图上添加新标记。也就是说,地图未重新加载,只添加了新标记。
我试图通过对获取当前查看者的脚本的ajax调用来实现此目的。我有一个输出到控制台显示结果,纬度和经度坐标是正确的,所以我不知道为什么它没有把标记放在地图上。
我在页面中引用与地图相同的类,因为我使用ajax脚本调用,所以我可以在页面上的javascript中间执行PHP foreach循环,并将标记放到地图上!但是,当然,我需要使用ajax来获取新的服务器端信息(新观众)。
js with php foreach()(作品)
注意:这是我测试它的方式,它是在$ .ajax成功函数中,但与ajax脚本无关
//add markers
function addMarker(stream_id) {
$.ajax({
dataType: 'json',
url: '../../stream/' + stream_id + '/mapmarkers',
success: function(result) {
<?php foreach($stream_viewer_info as $viewer) : ?>
markers.push(new google.maps.Marker({
position: new google.maps.LatLng(<?= $viewer['location_info']['latitude'] . ', ' . $viewer['location_info']['longitude']; ?>),
map: map
}));
<?php endforeach; ?>
},
complete: function() {
setTimeout(function(){addMarker(<?=$stream_id; ?>)}, 1000);
}
});
}
js with js for()(不起作用)
//add markers
function addMarker(stream_id) {
$.ajax({
dataType: 'json',
url: '../../stream/' + stream_id + '/mapmarkers',
success: function(result) {
for(var i = 0; i < result.length; i++) {
console.log('result ' + i + ': ' + result[i]['latitude'] + ', ' + result[i]['longitude']);
markers.push(new google.maps.Marker({
position: new google.maps.LatLng(result[i]['latitude'] + ', ' + result[i]['longitude']),
map: map
}));
}
},
complete: function() {
setTimeout(function(){addMarker(<?=$stream_id; ?>)}, 1000);
}
});
}
答案 0 :(得分:2)
试试这个
markers.push(new google.maps.Marker({
position: new google.maps.LatLng(result[i]['latitude'], result[i]['longitude']),
map: map
}));
您需要使用实际逗号分隔参数,而不是字符串