我有一张Google地图,用于从数据库中提取数据。一切都像它应该的那样工作,除了当你将鼠标悬停在地图上的某个点上时弹出的信息窗口(这一点是从数据库中提取的集合的一部分。所以任何点都可以有任意数量的点给定阶段)。
我的代码如下所示:
function getwindow(id) {
if(infowindows[id] == null || infowindows[id] == '') {
$.ajax({
url: "view/"+id,
type: "post",
async: true,
beforeSend: function() {
},
success: function(data) {
data = JSON.parse(data);
if(data.success) {
infowindows[id] = '<b>Info For: </b>' + data.Clinic.official_clinic_name + '<br/>' +
'{{image}}<br/>' +
'Tel: ' + data.Clinic.telephone;
} else {
alert('error');
}
}
});
}
}
var infowindow = new google.maps.InfoWindow({
content: ''
});
<?php foreach($jsdata as $data) : ?>
infowindows[<?php echo $data['id'];?>] = '';
google.maps.event.addListener(marker_<?php echo $data['id'];?>, 'mouseover', function() {
getwindow(<?php echo $data['id'];?>);
infowindow.setContent(infowindows[<?php echo $data['id'];?>]);
infowindow.open(map,marker_<?php echo $data['id']?>);
});
google.maps.event.addListener(marker_<?php echo $data['id'];?>, 'mouseout', function() {
infowindow.close();
});
<?php endforeach; ?>
我遇到的问题是弹出信息窗口第一次不显示。如果我第二次将鼠标悬停在它上面,它就能完美运行。我该怎么做才能第一次出现?
答案 0 :(得分:1)
由于异步$.ajax
调用,在第一次mouseover
事件时,infoWindow内容不可用。您必须将事件处理程序的定义移动到代码的success:
部分。