如何使用php验证坐标在某坐标区域内
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要为大家展示了"如何使用php验证坐标在某坐标区域内",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用php验证坐标在某坐标区域内"这篇文章
千家信息网最后更新 2026年10月31日如何使用php验证坐标在某坐标区域内
这篇文章主要为大家展示了"如何使用php验证坐标在某坐标区域内",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用php验证坐标在某坐标区域内"这篇文章吧。
之前碰到的这样一个需求,要将公司的服务在地图中显示出来,并将用户每天的访问坐标进行统计看有多少用户是在所能达到的服务范围半径内。
以下是PHP代码的实现 (仅验证坐标在某片坐标区域内)
* Class validationMap */class validationMap{ private static $coordArray; private static $vertx = []; private static $verty = []; /** * 设置坐标区域 * @param mixed $coordArray */ public static function setCoordArray(array $coordArray) { self::$coordArray = $coordArray; } /** * 验证区域范围 * @param array $coordArray * @return bool */ public static function isCityCenter(array $coordArray){ if(!self::vaildatePoint($coordArray)){ return false; } return self::pnpoly(count(self::$coordArray), $coordArray['lng'], $coordArray['lat']); } /** * 比较区域坐标 * @param $nvert * @param $testx * @param $testy * @return bool */ private static function pnpoly($nvert,$testx, $testy) { $c = false; for ($i = 0, $j = $nvert-1; $i < $nvert; $j = $i++) { if ( ( (self::$verty[$i]>$testy) != (self::$verty[$j]>$testy) ) && ($testx < (self::$vertx[$j]-self::$vertx[$i]) * ($testy-self::$verty[$i]) / (self::$verty[$j]-self::$verty[$i]) + self::$vertx[$i]) ) $c = !$c; } return $c; } /** * 验证坐标 * @param array $pointArray * @return bool */ private static function vaildatePoint(array $pointArray){ $maxY = $maxX = 0; $minY = $minX = 9999; foreach (self::$coordArray as $item){ if($item['lng']>$maxX) $maxX = $item['lng']; if($item['lng'] < $minX) $minX = $item['lng']; if($item['lat']>$maxY) $maxY = $item['lat']; if($item['lat'] < $minY) $minY = $item['lat']; self::$vertx[] = $item['lng']; self::$verty[] = $item['lat']; } if ($pointArray['lng'] < $minX || $pointArray['lng'] > $maxX || $pointArray['lat'] < $minY || $pointArray['lat'] > $maxY) { return false; } return true; }}/**************************** test *************************************/$map = [ //上海 ["lng" => 121.488286, "lat" => 31.420147], ["lng" => 121.702154, "lat" => 31.294828], ["lng" => 121.780918, "lat" => 31.141157], ["lng" => 121.782068, "lat" => 30.941157], ["lng" => 121.492885, "lat" => 30.909931], ["lng" => 121.22325, "lat" => 30.890099], ["lng" => 121.161482, "lat" => 31.015526], ["lng" => 121.076395, "lat" => 31.226239], ["lng" => 121.189873, "lat" => 31.339688], ["lng" => 121.459509, "lat" => 31.41368],];$array = ["lat"=>31.218681,"lng"=>121.08604];//进行验证的区域validationMap::setCoordArray($map);var_dump(validationMap::isCityCenter($array));在地图中的运用:
以上是"如何使用php验证坐标在某坐标区域内"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
坐标
区域
验证
内容
篇文章
地图
用户
范围
学习
帮助
服务
代码
公司
半径
易懂
是在
更多
服务范围
条理
标点
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
瑰夏咖啡
科技互联网产品
科技金融是不是互联网金融
科技赋能下的互联网金融
麻工互联网科技
互联网科技公司发展
世界互联网领先科技成果
极限挑战互联网科技
广州互联网络科技有限公司
互联网科技上市公司
深圳艾佳互联网科技
西藏七维空间互联网科技有限公司
互联网科技教育视频
互联网还是高科技吗
广西互联网科技孵化中心
本届互联网博览会上的黑科技
西安小鹰速贷互联网科技有限公司
长沙茂晟互联网科技有限公司
黑科技 体验场景 互联网大会
科技互联网企业在行动
互联网科技产业
云信互联网科技有限公司
腾讯科技 互联网女皇
菲比寻常互联网科技
须眉科技是互联网公司吗
全球顶尖互联网科技公司
洛阳昕诺飞互联网科技有限公司
厦门江牛科技互联网
北京品多多互联网科技有限公司
上海互联网科技园景观