如何使用php验证坐标在某坐标区域内
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要为大家展示了"如何使用php验证坐标在某坐标区域内",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"如何使用php验证坐标在某坐标区域内"这篇文章
千家信息网最后更新 2025年02月23日如何使用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安全错误
数据库的锁怎样保障安全
毕业报告网络安全技术研究
如何自己做一个电脑软件开发
盛大热血传奇物品数据库
网络安全通讯交流软件
辽宁正规软件开发服务应用
手抄报关于网络安全手写文字内容
简单网络安全伴我行手抄报漫画
数据库估算语句耗时
网络安全活动倡议书
贵州哪里放服务器云主机
数据库基础与应用配套练习及答案
迪酷cs1.6服务器
广州市伊思梦互联网科技有限公司
江苏标准软件开发直销价格
普通文件变成数据库的办法
我的世界服务器国服
梦幻手游虎虎生威服务器
搭建音乐服务器系统
命理与数据库
物理硬盘怎么加载到云服务器
贵州正规软件开发服务推广
数据库三级分类
山东省内网络安全公司分类
数据库安全网关厂商
网络技术最后一道题
网站怎么连接数据库
宁波智盛码软件开发有限公司
mac恢复出厂后安装服务器损坏
常州三维管理软件开发
牡丹江电信dns服务器