golang与php实现计算两个经纬度之间距离的方法
本文实例讲述了golang与php实现计算两个经纬度之间距离的方法。分享给大家供大家参考,具体如下:
golang版本:
packagemain
import(
"fmt"
"math"
)
funcmain(){
lat1:=29.490295
lng1:=106.486654
lat2:=29.615467
lng2:=106.581515
fmt.Println(EarthDistance(lat1,lng1,lat2,lng2))
}
//返回值的单位为米
funcEarthDistance(lat1,lng1,lat2,lng2float64)float64{
radius:=float64(6371000)//6378137
rad:=math.Pi/180.0
lat1=lat1*rad
lng1=lng1*rad
lat2=lat2*rad
lng2=lng2*rad
theta:=lng2-lng1
dist:=math.Acos(math.Sin(lat1)*math.Sin(lat2)+math.Cos(lat1)*math.Cos(lat2)*math.Cos(theta))
returndist*radius
}
php版本:
<?php
//返回值的单位为米
functionpc_sphere_distance($lat1,$lon1,$lat2,$lon2,$radius=6371000){
$rad=doubleval(M_PI/180.0);
$lat1=doubleval($lat1)*$rad;
$lon1=doubleval($lon1)*$rad;
$lat2=doubleval($lat2)*$rad;
$lon2=doubleval($lon2)*$rad;
$theta=$lon2-$lon1;
$dist=acos(sin($lat1)*sin($lat2)+cos($lat1)*cos($lat2)*cos($theta));
return$dist*$radius*1000;
}
$lat1=29.490295;
$lon1=106.486654;
$lat2=29.615467;
$lon2=106.581515;
echopc_sphere_distance($lat1,$lon1,$lat2,$lon2);
希望本文所述对大家Go语言程序设计有所帮助。