点聚合,弹出infowWindow

 1 for(var i=0;i<pointDatas.length;i++){
 2             var pointData = pointDatas[i];
 3             
 4             if(pointData.bdLongitude==null|| pointData.bdLatitude==null){
 5                 continue;
 6             }
 7             var pt = new BMap.Point(pointData.bdLongitude,pointData.bdLatitude);
 8             //是否刷新baiduMap中的points数组
 9             if(isFreshMapPoints){
10                 mapPanel.points.push(pointData);
11             }
12             
13             var marker = new BMap.Marker(pt); //创建marker对象
14             marker.addEventListener("click",view.showPointInfo(view,map,marker,pt,pointData.id));
15             showMarkers.push(marker);
16         }
17         //点聚合
18         mapPanel.markerClusterer = new BMapLib.MarkerClusterer(map, {markers:showMarkers});

注意的是,marker的click事件,有时候循环内传值会出现永远只传集合的最后一个值,此时可用闭包解决,例如:

1 function test(a){
2     return function(e){    //e是click事件的参数
3         return a;
4     }  
5 }

此时,a则为遍历集合中的参数

弹出info窗口,map是百度地图对象,labelText处可以写html代替(html中的表单元素似乎无效,或者会丢失默认样式)

 1 var searchInfoWindow = new BMapLib.SearchInfoWindow(map, labelText, {  //带检索的信息窗口
 2                                     title: "信息 ", //标题
 3                                     width: 380, //宽度
 4                                     height: 240, //高度
 5                                     panel : "panel", //检索结果面板
 6                                     enableAutoPan : true, //自动平移
 7                                     enableSendToPhone : false, //是否启动发送到手机功能
 8                                     searchTypes :[
 9                                         //BMAPLIB_TAB_SEARCH,   //周边检索
10                                         //BMAPLIB_TAB_TO_HERE,  //到这里去
11                                         //BMAPLIB_TAB_FROM_HERE //从这里出发
12                                     ]
13                                   });
14                                   searchInfoWindow.open(e.point);  //参数是point

 

posted on 2014-09-29 15:54  看天空的星星  阅读(493)  评论(0编辑  收藏  举报

导航