簡體   English   中英

gmaps.js觸發infoWindow

[英]gmaps.js trigger infoWindow

我在弄清楚如何使用gmaps.js觸發指定的infoWindow時遇到了一些困難

我的地圖初始化如下:

map = new GMaps({
    div: '#map-canvas'
});
renderMarkers();

我的renderMarkers函數基本上執行對PHP腳本的AJAX調用,該腳本查詢數據庫並返回結果集,並返回一系列的addMarker調用,如下所示:

LOOP THROUGH RESULT SET {

    map.addMarker({
        lat: marker.SiteLatitude, 
        lng: marker.SiteLongitude,
        infoWindow: {
           content: marker.contentHTML,
           closeclick: function(e) {
               $("#customer-details-container").hide();
           }
       },
       icon: marker.iconPath,
       id: marker.MyID
   })

}

當客戶端通過使用map.removeMarkers()然后觸發我的renderMarkers()函數觸發對基礎數據庫的更新時,我會刷新/重新渲染標記。 當標記在地圖上重繪時,如果用戶打開了一個infoWindow,我想觸發它​​打開。

我不確定如何根據特定ID觸發infoWindow。 舉例來說,假設設置了一個標記,如下所示:

    map.addMarker({
        lat: 102.325 
        lng: -67.524,
        infoWindow: {
           content: "<div>test!</div>"
           closeclick: function(e) {
               $("#customer-details-container").hide();
           }
       },
       icon: "image/marker.png",
       id: 1234
   })

我說對了,我應該能夠使用ID = 1234定位它嗎? 例如:

google.maps.event.trigger(markers[1234], 'click');

??

我不確定使用gmaps.js執行此操作的特定語法

任何幫助,不勝感激:D

添加到Gmaps.map實例中的每個標記都將其自己的InfoWindow存儲在markers對象中。 我們需要該特定標記的數組索引鍵。 按索引鍵打開右側的InfoWinow。 您可以通過執行以下操作打開特定於GMaps.js的標記:

(map.markers[index].infoWindow).open(map.map,map.markers[index]);

將[index]替換為您希望InfoWindow打開的標記的索引。

我說對了,我應該能夠使用ID = 1234定位它嗎?

我不這么認為。 該文檔非常不完整,在gmaps.js中,我找不到任何可以通過屬性訪問標記的功能。

但是您可以擴展原型:

GMaps.prototype.markerById=function(id){
  for(var m=0;m<this.markers.length;++m){
    if(this.markers[m].get('id')===id){
      return this.markers[m];
    }
  }
  return new google.maps.Marker();
}

用法:

google.maps.event.trigger(map.markerById(12345), 'click');

暫無
暫無

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

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