PHP建站技术分享-从入门到精通_各类知识收集PHP建站技术分享-从入门到精通_各类知识收集PHP建站技术分享-从入门到精通_各类知识收集

QQ:420220301 微信/手机:150-3210-7690
当前位置:首页 > 工作总结

PHP实例:验证坐标在某坐标区域内php代码

管理员 2025-02-26
工作总结
3

《PHP实例:验证坐标在某坐标区域内php代码》要点:
本文介绍了PHP实例:验证坐标在某坐标区域内php代码,希望对您有用。如果有疑问,可以联系我们。
 

之前碰到的这样一个需求,要将公司的服务在地图中显示出来,并将用户每天的访问坐标进行统计看有多少用户是在所能达到的服务范围半径内.PHP学习

以下是PHP代码的实现 (仅验证坐标在某片坐标区域内)PHP学习

<?php/** * 验证坐标点是否在某区域内 * @author xiaoliang <1058436713@qq.com> * 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学习

PHP实例:验证坐标在某坐标区域内php代码PHP学习

PHP实例:验证坐标在某坐标区域内php代码PHP学习

PHP实例:验证坐标在某坐标区域内php代码PHP学习



希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, LeCMS, ClassCMS, Fastadmin, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。

相关推荐

扫码关注

qrcode

QQ交谈

回顶部