美文网首页Golang语言社区
Go语言开发通过经纬度计算两点之间的距离

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

作者: 小歪子go | 来源:发表于2018-01-16 09:50 被阅读9次

    在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

    相关文章

      网友评论

        本文标题:Go语言开发通过经纬度计算两点之间的距离

        本文链接:https://www.haomeiwen.com/subject/stajoxtx.html