程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 百度地圖api-百度地圖API開發,使用MarkerClusterer進行點聚合的問題

百度地圖api-百度地圖API開發,使用MarkerClusterer進行點聚合的問題

編輯:編程綜合問答
百度地圖API開發,使用MarkerClusterer進行點聚合的問題

新手求助,我開發的程序在地圖上放置marker,是通過一個函數完成的:

 function addMarker(getPoint,outContent,titleContent){
 var opts = {
 position : getPoint, // 指定文本標注所在的地理位置
 offset : new BMap.Size(10, 0) //設置文本偏移量
 }
 var label = new BMap.Label(titleContent, opts); // 創建文本標注對象
 label.setStyle({
 color : "red",
 fontSize : "12px",
 height : "20px",
 lineHeight : "20px",
 fontFamily:"微軟雅黑"
 });


 var marker = new BMap.Marker(getPoint);
 var infoWindow = new BMap.InfoWindow(outContent,{width:300}); // 創建信息窗口對象
 // var titleWindow = new BMap.InfoWindow(titleContent,     {width:50,height:5});
 map.addOverlay(marker);
 marker.addEventListener("mouseover",function() {this.map.addOverlay(label);});
 marker.addEventListener("mouseout",function() {this.map.removeOverlay(label);});
 marker.addEventListener("click", function(){ 
 this.openInfoWindow(infoWindow);
 document.getElementById('smallpic').onload = function ()          {infoWindow.redraw();} 
 });
 }

然後再用for循環將已經讀取好的每個點的坐標、需要顯示的label、需要彈窗的infowindow的內容等輸入函數,在地圖上標點:

 for (i = 0; i < locations.length; i++) {
addMarker(point,readContent,titleContent); 
}

現在的問題是點很多,需要用MarkerClusterer進行點聚合,但是如果按照示例代碼那樣,建一個數組將坐標全部導入,聚合是成功了,但生成的聚合點是沒有label和infowindow的,感覺像是聚合點是直接生成了一批新的marker蓋在上面了。請問要怎麼寫才能解決這個問題?謝謝!

最佳回答:


在創建marker時候給marker添加窗口監聽事件
關鍵代碼:

// 創建標注
var marker2 = new BMap.Marker(pt, {icon : myIcon});
var infoWindow2 = new BMap.InfoWindow(text);
marker2.addEventListener("click", function() {
this.openInfoWindow(infoWindow2);
});

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved