使用ajax将内容加载到我的信息窗口的最佳方式是什么?现在我正在使用iframes获得类似的效果,但我对它并不是很满意。我认为这将是直截了当的,但由于某种原因,这让我感到困惑。这就是它现在的工作方式:
var markers = [];
var infowindow = new google.maps.InfoWindow();
$.each(JSON.parse(aulas), function(i, a){
var latlng = new google.maps.LatLng(a.aula.lat, a.aula.lng);
var marker = new google.maps.Marker({
position : latlng,
title: a.aula.title
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.close();
infowindow.setContent("<div class='infowindow_content'><iframe src='aulas/show/" + a.aula.id + "'></iframe</div>");
infowindow.open(map, marker);
});
markers.push(marker);
});在infowindow.setContent调用之前通过ajax获取内容是很容易的,但我只想在infowindow打开时调用ajax。有什么想法吗?
顺便说一下:我正在使用jQuery。
正如答案中所建议的,我决定将调用转移到setContent,并打开一个单独的函数。对于那些感兴趣的人来说,解决这个问题的代码是:
function load_content(marker, id){
$.ajax({
url: 'aulas/show/' + id,
success: function(data){
infowindow.setContent(data);
infowindow.open(map, marker);
}
});
}然后更改监听程序:
google.maps.event.addListener(marker, 'click', function() {
infowindow.close();
load_content(marker, a.aula.id);
});
markers.push(marker);
});发布于 2010-08-01 21:30:56
在info窗口显示后,您可以随时调用infowindow.setContent。因此,最初可以使用微调器设置信息窗口内容,进行AJAX调用(从事件处理程序),然后使用适当的数据从AJAX响应再次调用infowindow.setContent。
发布于 2013-10-18 15:49:52
for (var i = 0; i < markersClient.length; i++) {
var location = new google.maps.LatLng(lats[i], longs[i]);
var marker = new google.maps.Marker({
position: location,
map: map,
lid: markersClient[i].t
});
var infowindow = new google.maps.InfoWindow({
content: ""
});
//debugger;
marker.setTitle(" - ");
markers.push(marker);
google.maps.event.addListener(marker, 'click', function (target, elem) {
infowindow.open(map, marker);
$.ajax({
success:function () {
infowindow.setContent(contentString);
}
});初始化地图、标记、信息窗口(作为无内容),并在标记的单击处理程序上发出ajax请求
发布于 2015-05-22 13:05:29
已经将内容加载到infowindow,但如果您正在上传大尺寸的图像,则我们必须等待第一次完全加载图像,然后设置infoWindow的内容,然后显示该infowindow。上述要求的解决方案是可以的,但对于图像,它可能不会立即加载,因此要做到这一点,你必须检查infowindow的内容是否加载,然后只需显示信息窗口。
https://stackoverflow.com/questions/3381700
复制相似问题