Я наконец решил проблему, немного уточнив ответ Бьёрна.Его подход состоял в том, чтобы использовать div содержимого внутри информационного окна и обновлять его с document.getElementById()
, как только приходит ответ AJAX.Это работает, но не изменяет размер информационного окна, чтобы оно соответствовало содержимому AJAX ==> «пузырь» переполнен.
Мое окончательное решение решает эту проблему, вычисляя размеры содержимого div после заполнения содержимого AJAXЗатем я использую метод infoWindow.reset () - для определения новых измерений.
Вначале это было немного странно, но в итоге оказалось, что .reset () также требуется позиция маркера для правильной визуализации измененного размера информационного окна.Обратите внимание, что я использую 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
});
}