一、不规则多边形:奇内偶外
/**
*$lon 经度 string
*$lat 维度 string
*$coords 不规则多边形的点 json字符串
*/
function isPointInPolygon( $lon, $lat, $coords ){
$wn = 0;
$shift = false;
if( $coords[0]['lat'] > $lat ) {
$shift = true;
}
for( $i = 1; $i
$shiftp = $shift;
$shift = $coords[$i]['lat'] > $lat;
if( $shiftp != $shift ) {
$n = ( $shiftp ? 1 : 0 ) - ( $shift ? 1 : 0 );
if( $n * (( $coords[$i-1]['lng'] - $lon ) * ( $coords[$i]['lat'] - $lat ) - ( $coords[$i-1]['lat'] - $lat ) * ( $coords[$i]['lng'] - $lon ) )> 0) {
$wn += $n;
}
}
}
echo $wn;
}
例:
$coords='[{lng:116.398718, lat:39.921917}, {lng:116.394334, la