目前用了一个比较笨的方法,暂时还没找到更好用的,上代码:
创建一个工具栏
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");
}
}
}
}
来源:https://www.cnblogs.com/yeyuqian/p/12213856.html