微学网

热门关键词:   as  thinkphp  ecshop  xxx  php分页  商务通
热门: ASP.NET PHP编程 ASP编程 JSP编程 Python

php实现用经伟度两点地理坐标距离的计算方法

发布时间:2020-04-11 来源:未知 点击:

功能:根据圆周率和地球半径系数与两点坐标的经纬度,计算两点之间的球面距离。

获取两点坐标距离:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
/**
 * 计算两点地理坐标之间的距离
 * @param Decimal $longitude1 起点经度
 * @param Decimal $latitude1 起点纬度
 * @param Decimal $longitude2 终点经度
 * @param Decimal $latitude2 终点纬度
 * @param Int   $unit    单位 1:米 2:公里
 * @param Int   $decimal  精度 保留小数位数
 * @return Decimal
 */
function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit=2, $decimal=2){
 
  $EARTH_RADIUS = 6370.996; // 地球半径系数
  $PI = 3.1415926;
 
  $radLat1 = $latitude1 * $PI / 180.0;
  $radLat2 = $latitude2 * $PI / 180.0;
 
  $radLng1 = $longitude1 * $PI / 180.0;
  $radLng2 = $longitude2 * $PI /180.0;
 
  $a = $radLat1 - $radLat2;
  $b = $radLng1 - $radLng2;
 
  $distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
  $distance = $distance * $EARTH_RADIUS * 1000;
 
  if($unit==2){
    $distance = $distance / 1000;
  }
 
  return round($distance, $decimal);
 
}
 
// 起点坐标
$longitude1 = 113.330405;
$latitude1 = 23.147255;
 
// 终点坐标
$longitude2 = 113.314271;
$latitude2 = 23.1323;
 
$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 1);
echo $distance.'m'; // 2342.38m
 
$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 2);
echo $distance.'km'; // 2.34km
 
?>

 

方法二:

function rad($d, $pi = 3.14) {
    return $d * $pi / 180.0;
}
 
function getDistance($lat1, $lng1, $lat2, $lng2) {
    $r = 6378.137; // 地球半径
    $radLat1 = rad($lat1);
    $radLat2 = rad($lat2);
    $lat = $radLat1 - $radLat2;
    $long = rad($lng1) - rad($lng2);
 
    $s = 2 * asin(sqrt(pow(sin($lat/2), 2) + cos($radLat1)*cos($radLat2)*pow(sin($long/2), 2)));
    $s = $s * $r;
    return round($s * 10000) / 10000;
}
 
$a = array('lat' => +22.542, 'lng' => +114.056);
$b = array('lat' => +22.540, 'lng' => +114.084);
echo sprintf("两点的距离是:%skm", getDistance($a['lat'], $a['lng'], $b['lat'], $b['lng']));


方法三:

php 根据经纬度 计算两点之间的距离

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
 * 计算根据两点间经纬度计算两点间距离
 * @param unknown $lat1
 * @param unknown $lng1
 * @param unknown $lat2
 * @param unknown $lng2
 * @return number  /Km
 */
function getDistance($lat1, $lon1, $lat2, $lon2){
 
    //将角度转为狐度
 
    $radLat1=deg2rad($lat1);//deg2rad()函数将角度转换为弧度
 
    $radLat2=deg2rad($lat2);
 
    $radLng1=deg2rad($lon1);
 
    $radLng2=deg2rad($lon2);
 
    $a=$radLat1-$radLat2;
 
    $b=$radLng1-$radLng2;
 
    $s=2*asin(sqrt(pow(sin($a/2),2)+cos($radLat1)*cos($radLat2)*pow(sin($b/2),2)))*6378.137;
 
    return $s;
 
}

 



这就是微学网-程序员之家为你提供的"php实现用经伟度两点地理坐标距离的计算方法"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/13605.html
网络编程 | 前端制作 | 数据库 | CMS教程 | 脚本编程 | 框架 | 服务器 | 微信开发 | APP开发 |

凡本网站转载的文章、图片等资料的版权归版权所有人所有,因无法和版权所有者一一联系,如果本网站选取的文/图威胁到您的权益,请您及时和本网站联系。 我们会在第一时间内采取措施,避免给双方造 成不必要的损失。
© 2015-2018 微学网 版权所有,并保留所有权利。 备案号:粤ICP备09051474号-1

电脑版 | 移动版