百度地圖js 工具欄多邊形框選范圍內的標注


目前用了一個比較笨的方法,暫時還沒找到更好用的,上代碼:

創建一個工具欄

var drawingManager = new BMapLib.DrawingManager(map, {
isOpen: false, //是否開啟繪制模式
enableDrawingTool: true, //是否顯示工具欄
drawingToolOptions: {
anchor: BMAP_ANCHOR_BOTTOM_RIGHT, //位置
offset: new BMap.Size(-10, 30), //偏離值
scale: 0.7
},
enableCalculate: true,
circleOptions: styleOptions, //圓的樣式
polylineOptions: styleOptions, //線的樣式
polygonOptions: styleOptions, //多邊形的樣式
rectangleOptions: styleOptions //矩形的樣式
});

監聽事件
drawingManager.addEventListener('polygoncomplete', polygoncomplete);

 


function polygoncomplete(e, overlay) {

獲取地圖上所有標注
var olay = map.getOverlays();
var bbs = [];

獲取多邊形各點坐標
for (var t = 0; t < e.getPath().length; t++) {
bbs.push(new BMap.Point(e.getPath()[t].lng,e.getPath()[t].lat));
}

創建折線
var plo = new BMap.Polygon(bbs);
for (var i = 0; i < olay.length; i++) {

判斷overlay類型
if (olay[i].toString() == "[object Marker]") {

創建坐標
var pt = new BMap.Point(olay[i].point.lng, olay[i].point.lat);

進行判斷折線范圍包含true,反之false,用overlay不管用,不清楚情況還要在研究研究
var result = BMapLib.GeoUtils.isPointInPolygon(pt, plo);
if(result==true){
console.log("******************true");
}

}
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM