数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类全部分类技术牛文全部分类教程最新网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销开发数据库服务器系统虚拟化云计算嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

php如何计算两坐标点之间的距离

来源:脚本之家  责任编辑:小易  

地球上两个点之间,可近可远。

当比较近的时候,可以忽略球面因素,当做是一个平面,这样就有了两种计算方法。

//两点间距离比较近
function getDistance($lat1, $lng1, $lat2, $lng2) 
{ 
  $earthRadius = 6367000; //地球半径m

  $lat1 = ($lat1 * pi() ) / 180; 
  $lng1 = ($lng1 * pi() ) / 180; 

  $lat2 = ($lat2 * pi() ) / 180; 
  $lng2 = ($lng2 * pi() ) / 180; 

  $calcLongitude = $lng2 - $lng1; 
  $calcLatitude = $lat2 - $lat1; 
  $stepOne = pow(sin($calcLatitude / 2), 2) + cos($lat1) * cos($lat2) * pow(sin($calcLongitude / 2), 2); 
  $stepTwo = 2 * asin(min(1, sqrt($stepOne))); 
  $calculatedDistance = $earthRadius * $stepTwo; 

  return round($calculatedDistance); 
} 

//两点间距离比较远
function getLongDistance($lat1, $lng1, $lat2,$lng2,$radius = 6378.137)
{
  $rad = floatval(M_PI / 180.0);

  $lat1 = floatval($lat1) * $rad;
  $lng1 = floatval($lng1) * $rad;
  $lat2 = floatval($lat2) * $rad;
  $lng2 = floatval($lng2) * $rad;

  $theta = $lng2 - $lng1;

  $dist = acos(sin($lat1) * sin($lat2) + cos($lat1) * cos($lat2) * cos($theta));

  if ($dist < 0 ) {
    $dist += M_PI;
  }
  return $dist = $dist * $radius;
}

小编再为大家分享一段php坐标之间距离的求解代码:

 <?php 
  define('EARTH_RADIUS', 6378.137);//地球半径 
  define('PI', 3.1415926); 
  /** 
  * 计算两组经纬度坐标 之间的距离 
  * params :lat1 纬度1; lng1 经度1; lat2 纬度2; lng2 经度2; len_type (1:m or 2:km); 
  * return m or km 
  */ 
  function GetDistance($lat1, $lng1, $lat2, $lng2, $len_type = 1, $decimal = 2) 
  { 
  $radLat1 = $lat1 * PI / 180.0; 
  $radLat2 = $lat2 * PI / 180.0; 
  $a = $radLat1 - $radLat2; 
  $b = ($lng1 * PI / 180.0) - ($lng2 * PI / 180.0); 
  $s = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2))); 
  $s = $s * EARTH_RADIUS; 
  $s = round($s * 1000); 
  if ($len_type > 1) 
  { 
  $s /= 1000; 
  } 
  return round($s, $decimal); 
  } 
  echo GetDistance(39.908156,116.4767, 39.908452,116.450479, 1);//输出距离/米 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:


  • 本文相关:
  • golang与php实现计算两个经纬度之间距离的方法
  • php安装geoip扩展根据ip获取地理位置及计算距离的方法
  • php实现计算百度地图坐标之间距离的方法
  • php实现搜索地理位置及计算两点地理位置间距离的实例
  • php计算两个坐标(经度,纬度)之间距离的方法
  • php计算百度地图两个gps坐标之间距离的方法
  • php根据两点间的经纬度计算距离
  • php计算2点经纬度之间的距离代码
  • php workerman定时任务的实现代码
  • 完美的php分页类
  • yii framework框架教程之国际化实现方法
  • php5中实现多态的两种方法实例分享
  • thinkphp5框架分页样式类完整示例
  • php网页游戏学习之xnova(ogame)源码解读(十一)
  • php实现下载远程图片保存到本地的方法
  • php数组查找函数in_array()、array_search()、array_key_exists(
  • php版单点登陆实现方案的实例
  • thinkphp四种url访问方式详解
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved