我可以在这里提出一个重复的问题,但没有其他问题,我有确切的情况...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的理解有问题吗?