当前位置: 移动技术网 > IT编程>开发语言>PHP > php实现计算百度地图坐标之间距离的方法

php实现计算百度地图坐标之间距离的方法

2017年12月12日  | 移动技术网IT编程  | 我要评论

本文实例讲述了php实现计算百度地图坐标之间距离的方法。分享给大家供大家参考,具体如下:

下面是网上的代码,使用的时候需要进行些许修改

第一个函数是获得范围,参数为纬度经度半径

第二个函数是计算坐标距离

<?php
define('pi',3.1415926535898);
define('earth_radius',6378.137);
//计算范围,可以做搜索用户
function getrange($lat,$lon,$raidus){
  //计算纬度
  $degree = (24901 * 1609) / 360.0;
  $dpmlat = 1 / $degree;
  $radiuslat = $dpmlat * $raidus;
  $minlat = $lat - $radiuslat; //得到最小纬度
  $maxlat = $lat + $radiuslat; //得到最大纬度
  //计算经度
  $mpdlng = $degree * cos($lat * (pi / 180));
  $dpmlng = 1 / $mpdlng;
  $radiuslng = $dpmlng * $raidus;
  $minlng = $lon - $radiuslng; //得到最小经度
  $maxlng = $lon + $radiuslng; //得到最大经度
  //范围
  $range = array(
    'minlat' => $minlat,
    'maxlat' => $maxlat,
    'minlon' => $minlng,
    'maxlon' => $maxlng
  );
  return $range;
}
//获取2点之间的距离
function getdistance($lat1, $lng1, $lat2, $lng2){
  $radlat1 = $lat1 * (pi / 180);
  $radlat2 = $lat2 * (pi / 180);
  $a = $radlat1 - $radlat2;
  $b = ($lng1 * (pi / 180)) - ($lng2 * (pi / 180));
  $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 * 10000) / 10000;
  return $s;
}

更多关于php相关内容感兴趣的读者可查看本站专题:《php数组(array)操作技巧大全》、《php数学运算技巧总结》、《php正则表达式用法总结》、《php+ajax技巧与应用小结》、《php运算与运算符用法总结》、《php网络编程技巧总结》、《php基本语法入门教程》、《php日期与时间用法总结》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家php程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网