获取两个经纬度之间直线相距多少公里

100 阅读1分钟

在平时开发过程中,经常会遇到获取两点之间距离得情况,一般得解决方案是调用高德或者百度得地图api,精准得获取两点之间得距离,地图api会考虑路线等因素,通常来说比较精准。缺点就是付费。 下面代码计算距离适应于两点距离不需要非常准确得场景,可以不需要依赖互联网、各种包环境等,缺点则是只能获取直线距离。大家按需使用。

废话不多说代码如下,go版本代码:

// GetDistance 获取两点之间得距离 返回值单位公里
func GetDistance(lng1, lat1, lng2, lat2 float64) float64 {
   radLat1 := lat1 * math.Pi / 180.0
   radLat2 := lat2 * math.Pi / 180.0

   a := radLat1 - radLat2
   b := (lng1 * math.Pi / 180) - (lng2 * math.Pi / 180)
   s := 2 * math.Asin(
      math.Sqrt(
         math.Pow(math.Sin(a/2), 2)+math.Cos(radLat1)*math.Cos(radLat2)*math.Pow(math.Sin(b/2), 2),
      ),
   ) * 6378.137

   // 保留四位小数
   s = math.Round(s*10000) / 10000
   return s
}

其他语言的代码、其他得距离单位可以自行转换。

下面可以不看 是重复的。。。

在平时开发过程中,经常会遇到获取两点之间距离得情况,一般得解决方案是调用高德或者百度得地图api,精准得获取两点之间得距离,地图api会考虑路线等因素,通常来说比较精准。缺点就是付费。 下面代码计算距离适应于两点距离不需要非常准确得场景,可以不需要依赖互联网、各种包环境等,缺点则是只能获取直线距离。大家按需使用。