簡體   English   中英

谷歌地圖:地圖和標記加載后打開信息窗口

[英]google maps: open infowindow after map & marker load

我正在使用google maps api3。這有點煩人,但是在標記和地圖加載如何獲取infowindow.open

我嘗試添加各種偵聽器,例如tilesloadedidle ,並且沒有任何樂趣。

在這個工作示例中,您會看到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);  
};

編輯:更改了代碼筆以在顯示信息窗口之前偵聽加載的tile。 您的Codepen與TilesLoaded偵聽器的分支位於: http ://codepen.io/brenzy/pen/VLYwGN

因為SO需要一些代碼:

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

在我的機器上,監聽tileload和空閑狀態似乎都起作用。 (沒有任何偵聽器,信息窗口將顯示在地圖之前。)

我認為您的版本無法正常工作,因為您錯過了這一行

infowindow.open(tinygmaps, marker);

當您進行重構時,因此在偵聽器觸發之前打開了信息窗口。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM