首先需要获取经纬度,可以使用各种api获取,例如百度地图或高德地图
输入两个地址
上海市徐汇区桂箐路靠近华鑫天地
上海市浦东新区张江高科技园
通过api获取的经纬度
上海市徐汇区桂箐路靠近华鑫天地 经纬度: 121.407124,31.169677
上海市浦东新区张江高科技园 经纬度: 121.593357,31.214343
lon1 = 121.407124
lat1 = 31.169677
lon2 = 121.593357
lat2 =31.214343
注意返回数值单位的处理
#计算距离
from math import radians, cos, sin, asin, sqrt
# 将十进制度数转化为弧度
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
# haversine公式
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 # 地球平均半径,单位为公里
return c * r * 1000 #返回单位米
return c * r #返回单位公里
18397.59615786144 米
18.39759615786144 公里
reference