Go语言开发通过经纬度计算两点之间的距离

在Go语言开发中,若知道经纬度,可以通过下面的公式计算两点之间的距离

func main() {
    lat1 := 23.1378010917
    lng1 := 113.4022203113
    lat2 := 22.1191433172
    lng2 := 113.5826193044
    fmt.Println(GetDistance(lat1, lat2, lng1, lng2))

}
//返回单位为:千米
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
}

output:114.77281032762338
示例中的两个经纬度分别为广州和澳门某一点,通过第三方工具计算的结果和示例输出之间的误差在200米之内。


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容