<?php

class pointMap{
private static $coordArray;
private static $vertx = [];
private static $verty = []; public static function setArray(array $Array)
{
self::$coordArray = $Array;
} public static function isCenter(array $testarray){
if(!self::vaildatePoint($testarray)){
return false;
} return self::intra(count(self::$coordArray), $testarray['lng'], $testarray['lat']);
} private static function intra($n,$testx, $testy)
{ $c = false;
for ($i = 0, $j = $n-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;
} 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;
}
} $map = [
["lng" => 0.0, "lat" => 0.0],
["lng" => 0.0, "lat" => 1.0],
["lng" => 0.0, "lat" => 2.0],
["lng" => 1.0, "lat" => 2.0],
["lng" => 2.0, "lat" => 2.0],
["lng" => 2.0, "lat" => 1.0],
["lng" => 2.0, "lat" => 0.0],
]; $array = ["lat"=>2.0,"lng"=>6.0]; pointMap::setArray($map);
var_dump(pointMap::isCenter($array));

  

最新文章

  1. nginx服务器http重定向到https的正确写法
  2. Coding源码学习第四部分(Masonry介绍与使用(三))
  3. shell脚本,防止sshd被暴力破解
  4. python 类修饰器
  5. /WEB-INF/userManage.jsp(31,82) Unterminated ${ tag
  6. Android中实现消息推送(JPush)
  7. JSONObject和JSONArray使用
  8. Great writers inspire
  9. 【Web Service】WSDL文档
  10. pyqt例子搜索文本
  11. 给WebApp加一个“壳”,实现Andriod系统添加到桌面
  12. boost::asio设置同步连接超时
  13. Euclid Problem - PC110703
  14. eureka服务搭建
  15. XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Khamovniki
  16. 不常用但是很实用的css记录
  17. Linux管理用户和组
  18. 教你如何自学UI设计
  19. FileChannel类的理解和使用
  20. php 在函数前面加个@的作用

热门文章

  1. 腾讯云服务器CVM购买详细过程 选择我们需要的腾讯云服务器
  2. ASP.NET MVC 长连接(服务器推)完整实现
  3. GridView的 PreRender事件与范例--GridView + CheckBox,点选多列资料(复选删除)
  4. ffmeg过滤器介绍[转]
  5. echarts 相关属性介绍
  6. 2018.5.18 AndroidStudio创建项目出错
  7. datetime 插件
  8. 拷贝时间测试=cudamelloc+cudahostalloc
  9. CUDA:Supercomputing for the Masses (用于大量数据的超级计算)-第五节
  10. 梁勇(Danniel Liang) java教材例题:java程序购买额按税率求营业税 java中数值保留2位小数的方法