1

我正在使用此代码http://gmaps-utility-library-dev.googlecode.com/svn/trunk/geometrycontrols/examples/test.html 来选择谷歌地图上的区域。选择后,我将获得所选区域的所有纬度和经度列表。问题是我有一个点的纬度和经度,我想找出那个点是在所选区域下还是不使用 PHP。

谢谢你的回复。我在这里得到了完美的答案 Find Point in polygon PHP

4

1 回答 1

3

如果我没有被误解,您正在尝试查找选定点(纬度,经度)位于其他 4 个点(纬度,经度)的区域内,类似于这种情况;

  Ax,Ay Bx,按
A(10,20) B(20,20)
+-----------------+
| 像素, py |
| (15,15) |
| 磷 |
| |
| |
+-----------------+
  Cx,Cy Dx,Dy
C(10,10) D(20,10)

您可以通过数学方式找到此信息 A、B、C、D 是矩形的角点,P 是您要查找的单个点。这是可以帮助您找到 P 是否为正方形的代码片段。

PS:代码不是用编辑器编写的,因此可能包含拼写错误或错误。请仔细检查。

function isInsideSquare($Ax, $Ay, $Bx, $By, $Cx, $Cy, $Px, $Py) {
    if (triangleArea($Ax,$Ay,$Bx,$By,$Px,$Py)>0 || triangleArea($Bx,$By,$Cx,$Cy,$Px,$Py)>0 || triangleArea($Cx,$Cy,$Dx,$Dy,$Px,$Py)>0 || triangleArea($Dx,$Dy,$Ax,$Ay,$Px,$Py)>0) {
        return false;
    }
    return true;
}


function triangleArea($Ax, $Ay, $Bx, $By, $Cx, $Cy){
    return ($Cx*$By-$Bx*$Cy)-($Cx*$Ay-$Ax*$Cy)+($Bx*$Ay-$Ax*$By);
}
于 2012-10-02T08:35:32.500 回答