木子李的个人博客

Good Luck To You!

计算坐标是否在某区域内

<?php

//计算坐标是否在某区域内

function isPointInPolygon($point, $polygon) {

    list($px, $py) = $point;

    $inside = false;

    $n = count($polygon);

    $j = $n - 1;


    for ($i = 0; $i < $n; $i++) {

        list($ix, $iy) = $polygon[$i];

        list($jx, $jy) = $polygon[$j];


        $intersect = (($iy > $py) != ($jy > $py)) &&

            ($px < ($jx - $ix) * ($py - $iy) / ($jy - $iy) + $ix);

        $j = $i;

        if ($intersect) {

            $inside = !$inside;

        }

    }

    return $inside;

}


// 使用示例

$point = [116.391, 39.906]; // 经度,纬度

$polygon = [

    [116.385, 39.902], // 多边形顶点列表,经度,纬度

    [116.395, 39.908],

    [116.405, 39.902],

    [116.395, 39.895]

];

$polygon = [

    [119.925687,31.764112],

    [120.274503,31.7501],

    [120.209958,31.586466],

    [119.836423,31.530297],

    [119.624936,31.734917],

    [119.700467,31.923935],

    [119.911954,32.001996]

];

$point = [120.010831,31.871469];    //不在

$point = [119.627683,31.557216];    //不在

$point = [119.777372,31.77462];    //在


if (isPointInPolygon($point, $polygon)) {

    echo "点在多边形内";

} else {

    echo "点不在多边形内";

}


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年12月    »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3