我无法在下面的代码中找到错误,但它显示了所有infowindows的相同内容。
$('#map').gmap({'zoom': 2, 'disableDefaultUI':true}).bind('init', function(evt, map) {
var bounds = map.getBounds();
var southWest = bounds.getSouthWest();
var northEast = bounds.getNorthEast();
var lngSpan = northEast.lng() - southWest.lng();
var latSpan = northEast.lat() - southWest.lat();
var image = 'http://localhost/images/dot.png';
for ( var i = 0; i < len; i++ ) {
boxText.innerHTML = '<div id="content" style="margin-left:2px; font-weight:bold; margin-top:1px;overflow:hidden;">'+
'<div id="bodyContent" style="font-weight:bold;">'+
'<div style="font:10px verdana;color:#375A9E; margin-left:2px;font-weight:bold;">' +
'<a href="' + locations[i][5] + '" target="_blank">' + locations[i][0] + '</a><div>' +
'</div>';
boxText1.innerHTML ='<div id="content" class="map_rightclick" style="margin-left:10px; font-weight:bold; margin-top:1px;overflow:hidden;">'+
'<div id="bodyContent" style="font-weight:bold;">'+
'<div style="font:10px verdana;color:red; margin-left:2px;">' +
'<a href="' + locations[i][5] + '" target="_blank" style="font-weight:bold;">' + locations[i][0] + '</a><div>' +
'<br><b>City:</b><span style="color:black;">' + locations[i][3] +'</span>'+
'</div>';
$('#map').gmap('addMarker', {
'position': new google.maps.LatLng(locations[i][1], locations[i][2]),
'icon': image
}).click(function() {
$('#map').gmap('openInfoWindow', { content : boxText }, this);
}).rightclick(function(){
$('#map').gmap('openInfoWindow', { content : boxText1 }, this);
}).mouseover(function(){
$('#map').gmap('openInfoWindow', { content : boxText }, this);
}).mouseout(function(){
$('#map').gmap('closeInfoWindow',this);
});
}
$('#map_canvas').gmap('set', 'MarkerClusterer', new MarkerClusterer(map, $(this).gmap('get', 'markers')));
// To call methods in MarkerClusterer simply call
// $('#map_canvas').gmap('get', 'MarkerClusterer').callingSomeMethod();
});
答案 0 :(得分:2)
看起来您将点击处理程序和信息窗口内容附加到地图本身,而不是标记(并且您将其附加len
次!)。
$('#map').gmap('addMarker', {
'position': new google.maps.LatLng(locations[i][1], locations[i][2]),
'icon': image
}).click(function() {
$('#map').gmap('openInfoWindow', { content : boxText }, this);
})
infowindow内容只包含for循环中最后一项的内容。
您想要将infowindow的内容与标记相关联。你需要在'addMarker'的回调中做到这一点。
看起来你正在使用jquery.ui的地图插件。看看这个例子:http://code.google.com/p/jquery-ui-map/wiki/Examples#Example_addInfoWindow