我正在爲音樂場地和事件數據庫實現Maps界面,並遇到了一個有趣的問題。我有一系列HTML元素,通過onclick調用某個Javascript函數。這些調用運行正常,並且第一次正確運行javascript函數(所有信息都正確傳遞並且我的調試警報正確顯示)以及infoWindow顯示。第二次點擊其中一個div時,第一個div正確關閉,下面代碼中的最終警報觸發正確的信息,但新的InfoWindow不會彈出。在Google Maps API v3中打開第二個InfoWindow
地圖設置代碼:
function mapsInitialize() {
var mapOptions = {
center: new google.maps.LatLng(42.4439614, -76.5018807),
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("mapSection"), mapOptions);
google.maps.event.trigger(map, 'resize');
for(var x = 0; x < markers.length; x++){
var tempOptions = {
position: markers[x].position,
title: markers[x].name,
map: map
}
markerObjects[markers[x].title] = new google.maps.Marker(tempOptions);
}
}
功能從的div的onclick稱爲:
function generateInfoWindow(despacedName, despacedTitle, eventTitle, url, date, time){
if(curInfoWindow){
alert("closing " + curInfoWindow.getContent());
curInfoWindow.close();
curInfoWindow = null;
}
curInfoWindow = new google.maps.InfoWindow(options = {size: new google.maps.Size(150,50)});
curInfoWindow.setContent("<a class=\"eventLink\" href=\""+url+"\">"+eventTitle+"</a><br><br>"+markerObjects[despacedName].title+"<br>"+date+" at "+time);
curInfoWindow.open(map, markerObjects[despacedName]);
alert(despacedName+" is "+markerObjects[despacedName]);
}
我可以保證標記[]數組被正確地輸送。
我都試過了,除其他事項外...
創建數組來保存信息窗口,而不是使用一個變量curInfoWindow
不具有陣列中的任何自動關閉像開始generateInfoWindow()函數的作用
在mapsInitialize()函數中自動創建信息窗口
Google在搜索解決方案時的大部分結果爲我帶來了有關地圖上的事件偵聽器的信息 - 唯一的辦法就是像這樣觸發事件,或者我試圖做的事情是有效的嗎?
如果需要其他代碼示例,請告訴我。感謝您的任何建議!
你檢查你的JavaScript錯誤? – geocodezip
你是怎麼調用generateInfoWindow的? – geocodezip
你確定你可以做到這一點'curInfoWindow = new google.maps.InfoWindow(options = {size:new google.maps.Size'? – RASG