如何用Python的haversine库获取弧度制的用户当前位置
问题解决思路
直接点明两个核心错误点,以及对应的修正方案:
错误原因拆解
- haversine库的输入逻辑理解错了
这个库默认接受**角度制的(纬度, 经度)**坐标,内部会自动完成角度转弧度的计算,你手动用math.radians()转弧度后传入,反而让计算逻辑完全偏离,结果自然不对。 - 坐标顺序搞反了
haversine要求坐标格式是(纬度, 经度),但你代码里的第二个坐标(73.0472, 33.580)是经度在前、纬度在后,这会直接导致位置计算完全跑偏。
修正后的正确代码
from haversine import haversine # 严格按照(纬度, 经度)格式传角度制坐标,无需手动转弧度 distance = haversine((33.3569, 72.8307), (33.5809, 73.0472), unit='km') print(distance)
特殊需求:手动传弧度制坐标的处理
如果确实需要用弧度制坐标计算,可以直接用库提供的haversine_rad函数,示例代码:
import math from haversine import haversine_rad # 转成弧度后传入haversine_rad函数 coord1_rad = (math.radians(33.3569), math.radians(72.8307)) coord2_rad = (math.radians(33.5809), math.radians(73.0472)) distance = haversine_rad(coord1_rad, coord2_rad, unit='km') print(distance)
内容的提问来源于stack exchange,提问作者Sana Naz
相关产品推荐
相关产品推荐

