GoogleMapsV3:通过AJAX加载信息窗口内容

使用ajax将内容加载到我的信息窗口的最佳方式是什么?
现在我使用iframes获得了类似的效果,但我对它不是很满意。
我原以为这是直截了当的,但出于某种原因,这让我感到困惑。
这就是它现在的工作原理:

var标记=[];
var infowindow=new google.maps.infowindow();
$.each(JSON.parse(aulas),函数(i,a){
var latlng=新的google.maps.latlng(a.aula.lat,a.aula.lng);
var marker=new google.maps.marker({
位置:latlng,
标题:a.aula.title
});
google.maps.event.addListener(标记'click',函数(){
infowindow.close();
infowindow.setContent(“<div class='infowindow\u content'><iframe src='https://stackoverflow.com/questions/3381700/0]https://stackoverflow.com/questions/3381700/aulas/show/“+a.aula.id+””></iframe</div>”;
信息窗口。打开(地图、标记);
});
标记器。推(标记器);
});

在infowindow.setContent调用之前通过ajax很容易获取内容,但是我只想在infowindow打开时进行ajax调用。有什么想法吗

顺便说一句:我正在使用jQuery

正如回答中所建议的,我决定将调用移动到setContent,并打开一个单独的函数。对于那些感兴趣的人来说,解决这个问题的代码是:

功能加载\u内容(标记,id){
$.ajax({
url:'aulas/show/'+id,
成功:功能(数据){
infowindow.setContent(数据);
信息窗口。打开(地图、标记);
}
});
}

然后更改侦听器:

google.maps.event.addListener(标记,'click',函数(){
infowindow.close();
加载内容(标记,a.aula.id);
});
标记器。推(标记器);
});

显示信息窗口后,您可以随时调用infowindow.setContent。因此,您可以首先使用微调器设置信息窗口内容,进行AJAX调用(从事件处理程序),然后使用适当的数据再次从AJAX响应调用infowindow.setContent

发表评论