小程序地图,判断点击的点位是否在polygon之内

isPtInPoly(aLat, aLon, pointList) {
	/* 
	:param aLat: double 纬度 
	:param aLon: double 经度 
	:param pointList: list [{latitude: 22.22, longitude: 113.113}...] 多边形点的顺序需根据顺时针或逆时针,不能乱 
	*/
	let iSum = 0  
	let iCount = pointList.length
			      
	if(iCount < 3) {
		return false 
	}
	for(let i = 0; i < iCount;i++) {
		let pLat1 = pointList[i].latitude  
		let pLon1 = pointList[i].longitude
		let pLat2 = 0, pLon2 = 0;
		if(i == iCount - 1) {
			pLat2 = pointList[0].latitude
			pLon2 = pointList[0].longitude
		} else {
			pLat2 = pointList[i + 1].latitude  
			pLon2 = pointList[i + 1].longitude
		}
		if (((aLat >= pLat1) && (aLat < pLat2)) || ((aLat>=pLat2) && (aLat < pLat1))) {
			if (Math.abs(pLat1 - pLat2) > 0) {
			    let pLon = pLon1 - ((pLon1 - pLon2) * (pLat1 - aLat)) / (pLat1 - pLat2);  
			    if(pLon < aLon) {
			        iSum += 1 
			    }
	   	    }
	    } 
    }
	if(iSum % 2 != 0) {
		return true  
	}else {
		 return false 
	}  
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值