百度地图 遍历marker并增加窗口 只显示最后一个窗口信息的问题

使用地图从数据库加载marker,遇到一个问题,每次点击窗体都只出现遍历中最后一个的结果。
经过思考,得出结论是遍历的时候,虽然给每个marker加上了打开窗体的方法,但是会被后面的遍历替代,所以应该把方法单独拿出来

opts = {  
                    width : 200,     // 信息窗口宽度  
                    height: 80,     // 信息窗口高度  
                    title : "事件信息" , // 信息窗口标题  
                    enableMessage:true//设置允许信息窗发送短息  
        }; 
    //ajax显示Maker(EVENT)
         $.ajax({
            url:'preplan_event_queryAll.action',
            type:'POST',
            data:{
            },
            success:function(res){    
             var data=eval('('+res+')');
     for (var i = 0; i < data.length; i++) {
        var point = new BMap.Point(data[i].longitude, data[i].latitude);
        var marker = new BMap.Marker(point,
        {
        icon:eventIcon,
        enableMassClear:false     //防止被大规模清除
        });
        points.push(point);
        map.addOverlay(marker);


        var content = "事件名称:  " + data[i].eventName +"<br /> "  
                            + "上报人:     " + data[i].personName  +"<br /> " 
                            + "经度:     " + data[i].longitude  +"<br /> "  
                            + "纬度: " +  data[i].latitude  +"<br /> ";  
        //调用点击事件                    
        addClickHandler(content,marker); 



    }       //循环结束
        }        
        }); 
 //点击事件
    function addClickHandler(content,marker){  
        marker.addEventListener("click",function(e){  
        openInfo(" "+content,e)});  
    }  
    //生成窗体
    function openInfo(content,e){  
        var p = e.target;  
        var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat);  
        var infoWindow = new BMap.InfoWindow(content,opts);  // 创建信息窗口对象   
        map.openInfoWindow(infoWindow,point);                //开启信息窗口  
    }  

效果:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值