使用AJAX將內容加載到我的infowindow中的最佳方式是什麼? 現在我正在使用iframe獲得類似的效果,但我並不那麼滿意。 我認爲這將是直接的,但由於某種原因令我困惑。 這就是它的工作現在:谷歌地圖V3:通過AJAX加載infowindow內容
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);
});
人很容易就在infowindow.setContent調用之前搶到通過AJAX的內容,但我想要的信息窗口打開的時候才使Ajax調用。有什麼想法嗎?
順便說一句:我正在使用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);
});
讓我知道如果我需要澄清我的回答:) – RedBlueThing 2010-08-02 06:38:53
不,那是完美的。我的想法變得混亂了,我只需要輕輕地向正確的方向推動。謝謝! – mikewilliamson 2010-08-02 22:47:05
沒問題:)很高興幫助。 – RedBlueThing 2010-08-02 23:39:11