google-maps - 在第一个鼠标上,谷歌地图 信息窗口未显示

  显示原文与译文双语对照的内容

我有一张从数据库中提取数据的谷歌地图。 除了在地图上的某个点上弹出的信息窗口( 这点是从数据库获取的集合的一部分) 。 因此在任何给定的阶段都可以有任意数量的点。

我的代码如下所示:


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;?>

我所遇到的问题是弹出信息窗口不显示第一次。 如果我再次悬停在它上面,它就完美地工作了。 我怎么才能让它在第一次出现时出现?

时间: 作者:

因为异步 $.ajax 调用infoWindow内容在第一个 mouseover 事件时不可用。 你必须将事件处理程序的定义移动到代码的success: 部分。

作者:
...