【问题标题】:google maps: open infowindow after map & marker load谷歌地图:地图和标记加载后打开信息窗口
【发布时间】:2015-04-24 23:16:53
【问题描述】:

我正在使用 google maps api 3。这有点烦人,但我如何在标记和地图加载后获得infowindow.open?

我尝试添加various listeners,例如tilesloaded 和idle,但没有任何乐趣。

在这个工作示例中,您会看到 infowindow 在其他任何内容之前加载: http://codepen.io/anon/pen/WvbexY

function initialize() {
    if (document.getElementById("maper")) {        
       var latlng = new google.maps.LatLng(52.370778, 4.899448);
       var mapOptions = {
         zoom: 11,
         center: latlng,
         scrollwheel: "",
         scaleControl: "",
         disableDefaultUI: "",
          mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    var tinygmaps = new google.maps.Map(document.getElementById("maper"), mapOptions);
    var marker = new google.maps.Marker({
      map: tinygmaps,
      position: tinygmaps.getCenter()
    });

    var contentString = '<p>WHY ME FIRST?</p>';
    var infowindow = new google.maps.InfoWindow({
      content: contentString,
      position: latlng,
    });
    infowindow.open(tinygmaps, marker);
    //var openwindow = google.maps.event.addListener(tileListener, 'tilesloaded', open_infowindow); // Hummmm!
  }
}
google.maps.event.addDomListener(window, 'load', initialize);


function open_infowindow() {
  infowindow.open(tinygmaps, marker);
  google.maps.event.removeListener(tileListener);  
};

【问题讨论】:

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


    【解决方案1】:

    编辑:更改代码笔以在显示信息窗口之前侦听加载的瓦片。带有tilesloaded监听器的codepen分支在这里:http://codepen.io/brenzy/pen/VLYwGN

    因为 SO 需要一些代码:

    google.maps.event.addListenerOnce(tinygmaps, 'tilesloaded', function() {
      // open the infowindow
    });
    

    在我的机器上,监听 tileloaded 和 idle 似乎功能相同。 (没有任何一个监听器,信息窗口会显示在地图之前。)

    我假设你的版本没有工作,因为你错过了这条线

    infowindow.open(tinygmaps, marker);
    

    当您进行重构时,信息窗口在侦听器触发之前已打开。

    【讨论】:

    • 好吧,我只是把监听器叫错了,但idle 似乎没有什么不同。 tilesloaded 正在工作(在 chrome 上)。你不觉得一样吗?
    • 我在 Chrome windows 上运行,idle listener 确实有所作为。在我分叉的小提琴中,我在地图之后出现了信息窗口。但是,它们都出现得很快,所以很微妙。我没有尝试加载tiles。
    • 我的系统不是 migtymouse,但在 osx chrome 上,使用 idle 和 tilesloaded 时(与您的实现)存在显着差异。也许里程在这里有所不同,但titlesloaded 对我来说似乎更好。如果你愿意描述为什么像你一样添加监听器在我没有的地方工作(并从小提琴中删除该工作代码)我会将你的答案标记为正确。
    猜你喜欢
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多