【发布时间】:2014-01-16 09:53:17
【问题描述】:
我有一个从数据库中提取数据的谷歌地图。一切都按预期进行,除了当您将鼠标悬停在地图上的某个点上时弹出的信息窗口(该点是从数据库中提取的集合的一部分。所以任何点都可以有任意数量的点给定阶段)。
我的代码如下所示:
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; ?>
我遇到的问题是弹出信息窗口第一次没有显示。如果我再次将鼠标悬停在它上面,它会完美运行。如何让它第一次出现?
【问题讨论】:
-
您确定 infoWindow 的内容在第一次尝试时可用吗?如果将事件处理程序的定义移动到代码的
success:部分会怎样? -
成功了。只需将其添加为答案,我就会投票。我所做的是将标记作为变量传递,如下所示:
getwindow(<?php echo $data['id'];?>,marker_<?php echo $data['id'];?>);
标签: google-maps google-maps-api-3 infowindow