0%

Golang通过经纬度计算两点之间的距离

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
/*
计算两个坐标点之间的距离
*/

package main

import (
"fmt"
"math"
)

func main() {
// 张自忠路站
lat1:=39.939889
lng1:=116.423528
// 阜成门站
lat2:=39.929488
lng2:=116.362875

fmt.Println(GetDistance(lat1, lat2, lng1, lng2))
// 得到结果 5.2991238
// 百度地图测距 5.3km
}

//返回单位为:千米
func GetDistance(lat1, lat2, lng1, lng2 float64) float64 {
radius := 6371000.0 //6378137.0
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))
return dist * radius / 1000
}
如有疑问或需要技术讨论,请留言或发邮件到 service@itfanr.cc