在地图内绘制多边形,判断点是否在多边形内
isContainsPoint(point)传入当前经纬度
po是多边形的经纬度数组集合
popo是多边形内的小多边形,用来判断是否在小圈内
isContainsPoint(point) {
var count = po.length;
var popo = this.data.polygons[1].points;
var cccc = popo.length;
var flag = false;
var flag2 = true;
for (var i = 0, j = count - 1; i < count; j = i++) { //大圈
if (((point.latitude >= po[i].latitude && point.latitude < po[j].latitude) ||
(point.latitude < po[i].latitude && point.latitude >= po[j].latitude)) &&
(point.longitude < ((po[j].longitude - po[i].longitude) * (point.latitude - po[i].latitude) /
(po[j].latitude - po[i].latitude) + po[i].longitude))) {
flag = !flag;
}
}
for (var i = 0, j = cccc - 1; i < cccc; j = i++) { //小圈
if (((point.latitude >= popo[i].latitude && point.latitude < popo[j].latitude) ||
(point.latitude < popo[i].latitude && point.latitude >= popo[j].latitude)) &&
(point.longitude < ((popo[j].longitude - popo[i].longitude) * (point.latitude - popo[i].latitude) /
(popo[j].latitude - popo[i].latitude) + popo[i].longitude))) {
flag2 = !flag2;
}
}
console.log(flag) //true在大框内
console.log(flag2)
this.setData({
flag,
flag2
})
return flag;
},
多边形嵌套多边形
data:{
markers: [],
circles: [],
polygons: [{
points: [],
strokeWidth: 2,
zIndex: 0,
fillColor: '#87CEFA80', //填充颜色
strokeColor: '#0076b880' //描边颜色
}, {
points: [
{ longitude: 114.22657012939453, latitude: 22.703830247055468 },
{ longitude: 114.22905921936035, latitude: 22.70620562240129 },
{ longitude: 114.23086166381836, latitude: 22.70854136797615 },
{ longitude: 114.23006772994995, latitude: 22.709729019935917 },
],
strokeWidth: 2,
zIndex: 22,
fillColor: '#FFB6C180', //填充颜色
strokeColor: '#DC143C80' //描边颜色
}],
}
网友评论