Каков наилучший способ загрузки содержимого в мой infowindow с помощью ajax? Сейчас я получаю аналогичный эффект, используя iframes, но я не настолько доволен этим. Я подумал, что это будет прямо, но почему-то это меня путает. Вот как это работает сейчас:
var markers = [];
var infowindow = new google.maps.InfoWindow();
$.each(JSON.parse(aulas), function(i, a){
var latlng = new google.maps.LatLng(a.aula.lat, a.aula.lng);
var marker = new google.maps.Marker({
position : latlng,
title: a.aula.title
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.close();
infowindow.setContent("<div class='infowindow_content'><iframe src='aulas/show/" + a.aula.id + "'></iframe</div>");
infowindow.open(map, marker);
});
markers.push(marker);
});
Было бы легко захватить контент через ajax непосредственно перед вызовом infowindow.setContent, но я хочу сделать вызов ajax только тогда, когда откроется окно infowindow. Любые мысли?
BTW: Я использую jQuery.
Как было предложено в ответе, я решил переместить вызовы setContent и открыть отдельную функцию. Для тех, кого интересует код, который решил это:
function load_content(marker, id){
$.ajax({
url: 'aulas/show/' + id,
success: function(data){
infowindow.setContent(data);
infowindow.open(map, marker);
}
});
}
Затем измените слушателя:
google.maps.event.addListener(marker, 'click', function() {
infowindow.close();
load_content(marker, a.aula.id);
});
markers.push(marker);
});