当页面已加载时,所有信息窗口都已打开。后来infowindow关闭我再也无法打开。我的错误在哪里?
function init() {
var center = {lat: <?=$lat?>, lng: <?=$lng?>};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 12,
center: center
});
<?php for($i=0; $i<5; $i++){ ?>
var myLatLng = {lat:<?=$json[$i]['latitute']?>, lng:<?=$json[$i]['longitute']?>};
var marker = new google.maps.Marker({
position: myLatLng,
map: map
});
var contentString = "<table'><tr>"+
"<td><a href='<?=$json[$i]['image'];?></td>"+
"</tr></table>";
var infowindow = new google.maps.InfoWindow({
content: contentString
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map,this);
});
infowindow.close(map,marker);
var marker = new google.maps.Marker({
map: map
});
<?php } ?>
}
答案 0 :(得分:0)
在我看来,你正在覆盖你的变量。您的PHP循环对每个标记和infowindow使用相同的名称。也许在每个标识符之后添加?
var marker<?= $i;?> = ...
var infowindow<?= $i;?> = ...
我基本上使用5个标记和infowindows对你的循环进行了手动测试,并在javascript中对重复的变量进行了硬编码。在这种情况下,对我来说会发生什么,每个标记只会打开一个信息窗口。这是有道理的,因为你要覆盖标记变量和你正在绑定的事件。
无论如何,变量覆盖是一个你必须处理的问题,因为我确信这不是你想要实现的行为。