You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:计算当前坐标与JSON坐标列表间的直线距离

解决坐标列表计算直线距离的问题

嘿,我懂你现在的头疼事儿——硬写死坐标的时候,直线距离算得好好的,但一碰到从JSON里拿的坐标列表就掉链子了对吧?咱们一起来捋捋问题出在哪,把它搞定!

先确认最基础的:JSON里有没有坐标数据?

你贴的JSON片段里没看到经纬度相关的字段(比如Latitude/Longitude或者Coords),这可是计算距离的核心!首先得确认你的完整JSON数据里,每个位置对象是不是真的包含了坐标值。要是字段本身就缺失,那肯定没法计算,得先去核对数据源有没有正确返回坐标信息。

再检查遍历列表的逻辑有没有错

假设JSON里已经有了坐标字段,那大概率是你遍历列表时的代码逻辑出了问题——比如没正确提取每个对象里的坐标,或者循环里的变量用错了。给你举个Python的例子(你可以换成自己用的编程语言),假设你的JSON每个对象有Lat和Lng字段:

import math

# 你已经成功获取的当前位置坐标
current_lat, current_lng = -29.1234, 26.5678

# 补全坐标字段后的JSON示例数据
locations = [
    {
        "LocationID": 407,
        "LocationName": "Free State",
        "CustomerName": "Build It - Botshabelo ",
        "ContactNo": "051 - 534 4072",
        "Lat": -29.2345,
        "Lng": 26.6789
    },
    # 更多位置对象...
]

# 用哈维正弦公式计算经纬度间的直线距离(单位:公里)
def calculate_distance(lat1, lon1, lat2, lon2):
    earth_radius = 6371  # 地球平均半径,公里
    d_lat = math.radians(lat2 - lat1)
    d_lon = math.radians(lon2 - lon1)
    
    a = math.sin(d_lat/2) ** 2 + math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(d_lon/2) ** 2
    c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
    
    return earth_radius * c

# 遍历列表计算每个位置到当前点的距离
for loc in locations:
    # 先校验坐标字段是否存在
    if "Lat" in loc and "Lng" in loc:
        # 提取坐标(如果是字符串类型,记得转成数值)
        loc_lat = float(loc["Lat"])
        loc_lng = float(loc["Lng"])
        
        # 校验坐标是否有效(纬度-90~90,经度-180~180)
        if -90 <= loc_lat <= 90 and -180 <= loc_lng <= 180:
            distance = calculate_distance(current_lat, current_lng, loc_lat, loc_lng)
            print(f"{loc['CustomerName']} 到当前位置的距离:{distance:.2f} 公里")
        else:
            print(f"{loc['CustomerName']} 的坐标无效,跳过计算")
    else:
        print(f"{loc['CustomerName']} 缺少坐标数据,无法计算距离")

容易踩的坑:数据类型不匹配

有时候JSON里的坐标会存成字符串(比如"Lat": "-29.2345"),但计算距离的函数需要数值类型(int/float),这时候就会报错。所以提取坐标的时候一定要记得做类型转换,就像上面代码里的float(loc["Lat"])那样。

要是还解决不了,你可以补充这些信息

  • 你正在用的编程语言
  • 处理JSON列表时的具体代码片段
  • 遇到的具体错误提示(比如控制台输出的报错内容)

这样能更精准地帮你定位问题!

内容的提问来源于stack exchange,提问作者RRB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:59:58