我可以在這裏提出一個重複的問題,但沒有其他問題,我有確切的情況...jQuery的地圖UI [GMAP()],資訊盒和把手
我使用jQuery UI地圖,以輸出JSON用InfoBox替換默認的infoWindows以便用Handlebars填充它們。
這是我的代碼,下面是我的問題。我儘可能地發表評論。
// instantiate some variables to hold the array of markers and
// the array of infoboxes
var markers = [];
var infoBoxes = [];
// Instantiate a Handlebar template to create the content of the infoboxes
var infoWindowTemplate = $('#infowindow-template').html();
infoWindowTemplate = Handlebars.compile(infoWindowTemplate);
$.each(json, function(i, m) {
// add a marker ID to the JSON such that it can be returned and the
// modified JSON be used to build a summary list with links to each
// of the markers
json[i].marker_id = 'rig-marker-' + i;
// create a new infoBox with content generated with Handlebars
var infoBox = new InfoBox({
content: infoWindowTemplate(m),
alignBottom: true,
disableAutoPan: false,
maxWidth: 280,
pixelOffset: new google.maps.Size(-140, -45),
closeBoxURL: "img/close-btn.png",
infoBoxClearance: new google.maps.Size(50, 50),
enableEventPropagation: true
});
// add the infobox to the 'global' array
infoBoxes.push(infoBox);
// create the marker using the markerID from the modified json
var marker = map.gmap('addMarker', {
'position': new google.maps.LatLng(m.latitude, m.longitude),
'bounds': true,
'id': json[i].marker_id,
'icon': 'img/spot-icon.png',
'title': m.title
})
// add a click handler to the marker and assign the infoBox as the
// content
marker.click(function() {
map.gmap('openInfoWindow', infoBoxes[i], this);
});
// add the current marker to the markers array in preparation
// for being passed to the marker clusterer.
markers.push(marker[0]);
});
所以我的問題是,每個信息框包含相同的內容。它總是打開第一個標記的內容,給人的印象是InfoBox只是被移動到任何後續點擊標記。
當我登錄時被點擊信息框上的標誌內容:
marker.click(function() {
console.log(infoBoxes[i]);
map.gmap('openInfoWindow', infoBoxes[i], this);
});
控制檯顯示相應的內容,但內容不匹配,信息框......這就是爲什麼我如此的困惑!
我對此有什麼想法?我對jQuery Map UI或InfoBox的理解有問題嗎?