php中判断坐标点是否在一个区域中
16lz
2021-03-23
在做有关地图的坐标计算的时候有时候会遇到判断坐标点是否在某一个区域中,这时候就用到了判断点在面上的方法。
/**
* @param $aLon 经度或者纬度
* @param $aLat 纬度或者经度
* @param $pointList 区域地点多边形点的顺序需根据顺时针或逆时针,不能乱
* @return bool|int
*/
function is_ptin_poly($aLon, $aLat, $pointList = array())
{
$iSum = 0;
$iCount = count($pointList);
if ($iCount < 3) {
return false;
}
foreach ($pointList as $key => $row) {
$pLon1 = $row[0];
$pLat1 = $row[1];
if ($key === $iCount - 1) {
$pLon2 = $pointList[0][0];
$pLat2 = $pointList[0][1];
} else {
$pLon2 = $pointList[$key + 1][0];
$pLat2 = $pointList[$key + 1][1];
}
if ((($aLat >= $pLat1) && ($aLat < $pLat2)) || (($aLat >= $pLat2) && ($aLat < $pLat1))) {
if (abs($pLat1 - $pLat2) > 0) {
$pLon = $pLon1 - (($pLon1 - $pLon2) * ($pLat1 - $aLat)) / ($pLat1 - $pLat2);
if ($pLon < $aLon) {
$iSum += 1;
}
}
}
}
if ($iSum % 2 != 0) {
return true;
} else {
return false;
}
}
更多相关文章
- Android(OPhone) 学习笔记 - 地图(3)
- Android自定义气球Overlay的开发
- Android使用百度地图SDK
- Android通过手机GPS获取经纬度方法
- Android(安卓)调起百度地图和高德地图
- ANDROID 开发日志(2012-01-04)
- android和ios GoogleMap画导航线路图 路径规划(Directions)
- Android编程获取地理位置的经度和纬度实例
- android定时定位 - 利用百度定位API来实现定时定位功能