最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

驗(yàn)證坐標(biāo)在某坐標(biāo)區(qū)域內(nèi)php代碼

 更新時(shí)間:2016年10月08日 09:58:23   作者:x_liang  
這篇文章主要為大家詳細(xì)介紹了驗(yàn)證坐標(biāo)在某片坐標(biāo)區(qū)域內(nèi)php代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

之前碰到的這樣一個(gè)需求,要將公司的服務(wù)在地圖中顯示出來,并將用戶每天的訪問坐標(biāo)進(jìn)行統(tǒng)計(jì)看有多少用戶是在所能達(dá)到的服務(wù)范圍半徑內(nèi)。

以下是PHP代碼的實(shí)現(xiàn) (僅驗(yàn)證坐標(biāo)在某片坐標(biāo)區(qū)域內(nèi))

<?php
/**
 * 驗(yàn)證坐標(biāo)點(diǎn)是否在某區(qū)域內(nèi)
 * @author xiaoliang <1058436713@qq.com>
 * Class validationMap
 */
class validationMap{
 private static $coordArray;
 private static $vertx = [];
 private static $verty = [];
 /**
  * 設(shè)置坐標(biāo)區(qū)域
  * @param mixed $coordArray
  */
 public static function setCoordArray(array $coordArray)
 {
  self::$coordArray = $coordArray;
 }
 /**
  * 驗(yàn)證區(qū)域范圍
  * @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']);
 }
 /**
  * 比較區(qū)域坐標(biāo)
  * @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;
 }
 /**
  * 驗(yàn)證坐標(biāo)
  * @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];//進(jìn)行驗(yàn)證的區(qū)域
validationMap::setCoordArray($map);
var_dump(validationMap::isCityCenter($array));

在地圖中的運(yùn)用:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

贵定县| 来凤县| 黄浦区| 闽侯县| 上饶市| 双流县| 安多县| 万荣县| 河间市| 河池市| 都安| 松江区| 龙海市| 定远县| 志丹县| 精河县| 伊宁县| 渭南市| 太保市| 永胜县| 合阳县| 泸定县| 高唐县| 房山区| 和平县| 和硕县| 综艺| 鄱阳县| 望江县| 神木县| 嘉峪关市| 福安市| 明光市| 固阳县| 西贡区| 夏河县| 增城市| 云和县| 恭城| 长葛市| 睢宁县|