新手求助,我開發的程序在地圖上放置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);
});