[英]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.