如何使用php验证坐标在某坐标区域内
发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要为大家展示了"如何使用php验证坐标在某坐标区域内",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用php验证坐标在某坐标区域内"这篇文章
千家信息网最后更新 2025年11月06日如何使用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安全错误
数据库的锁怎样保障安全
数据库微小面
网络安全等级保护备案手续
当前数据库无效
电脑处理器和服务器哪个更好
2042门户未找到服务器
oracle数据库可重复读
1U的服务器
宽带网络技术期末考试试卷
ecu软件开发工程师招聘
数据库有哪些软件是免费的
软件开发业务员提成
服务器控制管理器事件
股票每分钟交易数据库
苹果软件开发者版本
柏羽互联网科技有限公司
数据库怎么删除关系中的表
煤矿网络安全应急处置
招远软件开发外包公司
网络安全活动助阵
小米路由web服务器
添加新网络安全类型
rbn 网络安全
网络安全用户权限设置
四川办公系统软件开发服务
网络安全违规外联典型案例
魔兽龙骨平原在那个服务器
ntp服务器连接数量
利用个人pc搭建服务器
tp路由器虚拟服务器设置
云数据库管理系统开源