测试环境
python 3.6
django 3.1
代码部分
haversine 公式
用于计算地图上两点之间的直线距离
A点经纬度(lon1, lat1)
B点经纬度(lon2, lat2)
from math import radians, fabs
def haversine(lon1, lat1, lon2, lat2):
"""
计算地图两点之间的的距离
在地球上(以十进制度数指定)
lon1: 经度1
lat1: 纬度1
lon2: 经度2
lat2: 纬度2
"""
# 将十进制度数转化为弧度
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat / 2) ** 2 + cos(lat1) * cos(lat2) * sin(dlon / 2) ** 2
c = 2 * asin(sqrt(a))
r = 6371 # 地球平均半径,单位为km
res = fabs(c * r) # (km为单位)
return res