加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Google Map:一个多边形内的lat / lng?

发布时间:2020-12-13 14:09:00 所属栏目:PHP教程 来源:网络整理
导读:给定一对lat / lng值,如何确定该对是否在多边形内?我需要在 PHP中这样做.我看到Google Maps API有一个containsLocation方法: https://developers.google.com/maps/documentation/javascript/reference.有没有办法利用PHP? 查找点是否在多边形中的一种方法
给定一对lat / lng值,如何确定该对是否在多边形内?我需要在 PHP中这样做.我看到Google Maps API有一个containsLocation方法: https://developers.google.com/maps/documentation/javascript/reference.有没有办法利用PHP?
查找点是否在多边形中的一种方法是计算从点(在任何方向)绘制的线与多边形边界相交的次数.如果它们相交偶数次,则该点在外部.

我已经在php中实现了这个Point in Polygon文章中的C代码,并使用下面的多边形来说明.

<?php
//Point-In-Polygon Algorithm
$polySides  = 4; //how many corners the polygon has
$polyX    =  array(4,9,11,2);//horizontal coordinates of corners
$polyY    =  array(10,7,2,2);//vertical coordinates of corners
$x = 3.5;
$y = 13.5;//Outside
//$y = 3.5;//Inside

function pointInPolygon($polySides,$polyX,$polyY,$x,$y) {
  $j = $polySides-1 ;
  $oddNodes = 0;
  for ($i=0; $i<$polySides; $i++) {
    if ($polyY[$i]<$y && $polyY[$j]>=$y 
 ||  $polyY[$j]<$y && $polyY[$i]>=$y) {
    if ($polyX[$i]+($y-$polyY[$i])/($polyY[$j]-$polyY[$i])*($polyX[$j]-$polyX[$i])<$x)    {
    $oddNodes=!$oddNodes; }}
   $j=$i; }

  return $oddNodes; }


 if (pointInPolygon($polySides,$y)){
  echo "Is in polygon!";
}
else echo "Is not in polygon";
?>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读