点聚合,弹出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