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