0
在我如何實現InfoBox時遇到問題,並且想知道是否有人對可能的解決方案有所瞭解。谷歌地圖InfoBox和ajax調用導致多個呈現
目前我有〜1000個客戶端標記,它們都被動態添加到頁面中。他們正在使用以下內容生成。
var cir = new google.maps.Marker({
position: new google.maps.LatLng(l.lat, l.lng),
map: map,
icon: icons[l.type].simple
});
addClickHandlerAjax(cir, l);
l.m = cir;
addClickHandlerAjax方法是點擊標記時調用的方法。這是這種方法的基礎。
function addClickHandlerAjax(marker, l) {
google.maps.event.addListener(marker, "click", function() {
if(theInfoWindow){
theInfoWindow.close();
// InfoWindow = null;
}
//get content via ajax
$.ajax({
url: 'map/getInfo',
type: 'get',
data: {
'ID': l.f
},
success: function (data, status) {
if (status == "success") {
//create infowindow here..
theInfoWindow= new InfoBox({
content: document.getElementById("infobox-wrapper-hotel"),
disableAutoPan: true,
enableEventPropagation: true,
closeBoxURL: '../assets/images/info-close.png',
});
theInfoWindow.open(map, marker);
touchScroll('rab-scroll');
});
}
},
error: function (xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
}
}); // end ajax call
});
}
問題在於用戶非常快速地點擊多個標記。之前標記的信息框可以保持打開狀態。但它可能不包含任何內容。
有誰知道如何通過安全關閉信息框的所有實例來正確處理多個信息框?
我沒有看到這種行爲在此實現Jsfiddle
我公司目前已經在全球範圍內的變量,在定義js文件的頂部var theInfoWindow = null; - – user3032973 2014-09-29 19:22:00
請提供一個[最小,完整,已測試和可讀的示例](http://stackoverflow.com/help/mcve)來說明問題。 – geocodezip 2014-09-29 19:22:57
問題是ajax調用需要很長時間才能返回。所以你可以在第一個標記打開時點擊另一個標記。我會很難做出一個表現相同的極簡主義的例子...... – user3032973 2014-09-29 19:34:16