百度地图插件 (如何实现点击不同标注打开信息窗口显示不同的内容?)

陆雅志
2023-12-01

这要用到 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));
}

 类似资料: