Php 获取坐标是否位于多段线内
给定地图中坐标的多段线,如何知道坐标是否在该多段线内 例如,在此图像中: 我如何知道40.744818,-73.989701(每个示例)是否在内部 PHP中的最佳if:pPhp 获取坐标是否位于多段线内,php,maps,coordinates,Php,Maps,Coordinates,给定地图中坐标的多段线,如何知道坐标是否在该多段线内 例如,在此图像中: 我如何知道40.744818,-73.989701(每个示例)是否在内部 PHP中的最佳if:p 谢谢大家! 这个问题已经解决(使用javascript),请阅读: 以下是数学描述: ,这里是一些不同的算法,您可以使用。我建议您使用光线投射算法(RCA): 有一个可以在php中实现的伪代码;) 要解决数学问题,建议浏览此项目: 希望您能找到一个针对您的问题的php解决方案;) 如果您需要更高的性能,您可以在2D中处理
谢谢大家! 这个问题已经解决(使用javascript),请阅读: 以下是数学描述: ,这里是一些不同的算法,您可以使用。我建议您使用
光线投射算法(RCA
):
有一个可以在php中实现的伪代码;)
要解决数学问题,建议浏览此项目:
希望您能找到一个针对您的问题的php解决方案;)
如果您需要更高的性能,您可以在2D中处理共谋检测。
第一步:围绕多边形创建外部矩形,请参见矩形中的insde点。如果在内部,则有可能您的点位于多边形内部,然后运行光线投射算法
。见:
$px //the x coordinate of your point
$py //the y coordinate of your point
$ppy //the y coordinates of points of your polygon (in the correct order)
$ppx //the x coordinates of points of your polygon (in the correct order)
$isInside =
(max($ppy)>$py && min($ppy)<$px && max($ppx)>$px && min($ppy)<$px)?
RCA($px,$py,$ppx,$ppy):
false;
}
/**
* @description decide, is a point in poligon
* @param float $px the x coordinate of your point
* @param float $py the y coordinate of your point
* @param array(float) $ppx the x coordinates of the points of polygon
* array(x1,x2,...)
* @param array(float) $ppy the y coordinates of the points of polygon
* array(y1,y2,...)
* points of polygon: [x1,y1],[x2,y2],...
* @return boolean : Is the point inside the polygon?
*/
function RCA($px,$py,array $ppx,array $ppy){
//the implementation
}
$px//点的x坐标
$py//点的y坐标
$ppy//多边形点的y坐标(按正确顺序)
$ppx//多边形点的x坐标(按正确顺序)
$isInside=
(max($ppy)>$py&&min($ppy)$px&&min($ppy)你是想重新发明算法还是想找一个库(在这种情况下,用谷歌搜索一些,那里有很多)?我会寻找你的“维基”URL…我不想使用谷歌地图(因为它在服务器端)。谢谢!;)干得好;)我将此添加到答案中,以帮助其他有相同问题的人;)