这要用到 js 的闭包
代码如下:
/* 当在地图上只有一个标注时
* @param list // 经纬度列表
*/
function initializeList(list) {
var loca = getLocation(list[0].itude);
var B = loca['B'];
var L = loca['L'];
var map = new BMap.Map("map"); // 创建地图实例
var point = new BMap.Point(B, L); // 创建点坐标
map.centerAndZoom(point, 11); // 初始化地图,设置中心点坐标和地图级别
map.enableScrollWheelZoom(); // 启用滚轮放大缩小
//var marker = new BMap.Marker(point); // 创建标注
//map.addOverlay(marker); // 将标注添加到地图中
var marker = new Array();
var infoWindow = new Array();
var len = list.length;
for (var i = 0 ; i < len ; i++) {
var loca = getLocation(list[i].itude);
var B = loca['B'];
var L = loca['L'];
var point = new BMap.Point(B, L); // 创建点坐标
marker[i] = new BMap.Marker(point); // 创建标注
map.addOverlay(marker[i]); // 将标注添加到地图中
var title = list[i].name;
var content = list[i].content;
var opts = {
// 角各偏移0像素和-25像素
offset: new BMap.Size(0, -25),
width : 25, // 信息窗口宽度
height: 10, // 信息窗口高度
title : title // 信息窗口标题
}
infoWindow[i] = new BMap.InfoWindow(content, opts); // 创建信息窗口对象
marker[i].addEventListener("onclick",(function(k){
// js 闭包
return function(){
marker[k].openInfoWindow(infoWindow[k]);
}
})(i));
}