第一次鼠标悬停时,Google地图信息窗口无法显示

时间:2014-01-16 09:53:17

标签: google-maps google-maps-api-3 infowindow

我有一张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; ?>

我遇到的问题是弹出信息窗口第一次不显示。如果我第二次将鼠标悬停在它上面,它就能完美运行。我该怎么做才能第一次出现?

1 个答案:

答案 0 :(得分:1)

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