首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌地图V3:通过AJAX加载信息窗口内容

谷歌地图V3:通过AJAX加载信息窗口内容
EN

Stack Overflow用户
提问于 2010-08-01 18:41:38
回答 4查看 29.7K关注 0票数 39

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

代码语言:javascript
复制
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,并打开一个单独的函数。对于那些感兴趣的人来说,解决这个问题的代码是:

代码语言:javascript
复制
function load_content(marker, id){
  $.ajax({
    url: 'aulas/show/' + id,
    success: function(data){
      infowindow.setContent(data);
      infowindow.open(map, marker);
    }
  });
}

然后更改监听程序:

代码语言:javascript
复制
    google.maps.event.addListener(marker, 'click', function() {
      infowindow.close();
      load_content(marker, a.aula.id);
    });
    markers.push(marker);
  });
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-08-01 21:30:56

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

票数 32
EN

Stack Overflow用户

发布于 2013-10-18 15:49:52

代码语言:javascript
复制
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请求

票数 2
EN

Stack Overflow用户

发布于 2015-05-22 13:05:29

已经将内容加载到infowindow,但如果您正在上传大尺寸的图像,则我们必须等待第一次完全加载图像,然后设置infoWindow的内容,然后显示该infowindow。上述要求的解决方案是可以的,但对于图像,它可能不会立即加载,因此要做到这一点,你必须检查infowindow的内容是否加载,然后只需显示信息窗口。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3381700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档