【go语言计算两个经纬度距离】根据经纬度计算两点之间距离

一、需求分析:
输入两个经纬度,计算它们之间的距离


lat1,lng1 := 32.060255,118.796877
lat2,lng2 := 39.904211,116.407395

二、计算公式


//C = sin(LatA*Pi/180)*sin(LatB*Pi/180) + cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)
//
//Distance = R*Arccos(C)*Pi/180

三、运行效果

"D:\Program Files (x86)\JetBrains\Gogland 171.3780.106\bin\runnerw.exe" D:/Go\bin\go.exe run D:/Go/code/src/awesomeProject/EarthDistance.go
899.217935km
Process finished with exit code 0

四、实现代码

package main

import (
    "fmt"
    "math"
)

//计算公式
//C = sin(LatA*Pi/180)*sin(LatB*Pi/180) + cos(LatA*Pi/180)*cos(LatB*Pi/180)*cos((MLonA-MLonB)*Pi/180)
//
//Distance = R*Arccos(C)*Pi/180

func EarthDistance(lat1, lng1, lat2, lng2 float64) float64 {
    radius :=6378.137
    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
}

func main() {
    lat1,lng1 := 32.060255,118.796877
    lat2,lng2 := 39.904211,116.407395
    distance:=EarthDistance(lat1, lng1, lat2, lng2)
    fmt.Printf("%fkm",distance)
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页