我終於通過細化Björn的回答來解決了這個問題。他的做法是在infowindow中使用content div,並在AJAX響應到達時用document.getElementById()
進行更新。這可以工作,但不會調整infowindow以適應AJAX內容==>「泡泡」溢出。
我的最終解決方案是通過計算內容div的大小來解決這個問題,然後我使用infoWindow.reset() - 方法來指定新維度。
這在開始時有點古怪,但最後發現.reset()也需要標記位置才能正確渲染調整大小的infowindow。請注意,我正在使用jQuery的DOM的東西。
marker = new GMarker (...);
GEvent.addListener(marker,'click', loadPOIDescription);
function loadPOIDescription(){
var marker = this;
marker.openInfoWindow('<div id="marker-info">Loading POI Description...</div>');
$.get("backend.php", function(data){
var $contentDiv = $("#marker-info");
$contentDiv.html(data);
//the magic happens here
var position = marker.getLatLng();
var infoWindow = map.getInfoWindow(); //map is my global GMaps2 object
// set the infowindow size to the dimensions of the content div
var infoWindowSize = new GSize($contentDiv.width(), $contentDiv.height());
//apply the modifications
infoWindow.reset(position, null, infoWindowSize, null, null); //reset the infowindow
});
}
嗯僅僅指剛的想法,不知道它的工作原理 ......如果你能夠click事件綁定到標記(這是可能的,我認爲),你可以告訴JS這標誌這是。 刪除標記。做ajax請求並創建一個新的,在相同的位置,相同的處理,並給出相應的ajax結果。 – helle 2010-06-22 14:29:20
更新了我的回答 – 2010-06-22 15:49:05
@Björn:不錯的努力,但infoWindow維度不適應注入DOM的內容==>大部分內容都在泡泡之外呈現。嗯...也許我使用滾動條 – fbuchinger 2010-06-22 16:25:03