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

如何提取数组中每个对象的Lat和Long属性用于坐标距离计算

解决方案

原代码存在的问题

  • 变量名大小写不匹配:funTest中定义的是Lat(大写),调用compare时写成了小写的lat,同理Lon和lon,会导致未定义错误
  • compare函数参数传递缺失:调用时只传了两个参数,但函数需要四个,客户坐标GUESTLAT、GUESTLON没有传入
  • compare函数内的语法错误:newLong = GUESTLON = lon是赋值操作,不是差值计算,应该是GUESTLON - lon
  • 缺少距离计算的实际逻辑,仅做了坐标差值,未完成距离计算

修正后的代码

const places = [
  { City: 'Tribuckan', Lat: 48569.52, Long: 48.5 },
  { City: 'Mecca', Lat: 48569.52, Long: 48.5 },
  { City: 'Dazenda', Lat: 48569.52, Long: 48.5 },
  { City: 'Uzumakin', Lat: 48569.52, Long: 48.5 },
];

// 计算两点距离(假设是平面坐标,用欧几里得距离;如果是经纬度需用Haversine公式)
const calculateDistance = (placeLat, placeLon, guestLat, guestLon) => {
  // 欧几里得距离计算
  const latDiff = guestLat - placeLat;
  const lonDiff = guestLon - placeLon;
  return Math.sqrt(latDiff ** 2 + lonDiff ** 2);
};

// 遍历所有地点,计算每个地点与客户坐标的距离
const processPlaces = (places, guestLat, guestLon) => {
  places.forEach(place => {
    const distance = calculateDistance(place.Lat, place.Long, guestLat, guestLon);
    // 可按需处理结果,比如打印或存储
    console.log(`${place.City} 与客户坐标的距离: ${distance.toFixed(2)}`);
  });
};

// 示例:客户输入的坐标
const GUEST_LAT = 48570.0;
const GUEST_LON = 49.0;

// 执行处理
processPlaces(places, GUEST_LAT, GUEST_LON);

代码说明

  1. 统一变量命名,避免大小写错误
  2. 将客户坐标作为参数传入processPlaces,确保每个地点都能拿到对比基准
  3. 实现了基础的平面距离计算逻辑,如果是经纬度坐标,可替换为以下Haversine公式:

经纬度距离计算(Haversine公式)

const calculateDistance = (placeLat, placeLon, guestLat, guestLon) => {
  // 转换为弧度
  const radPlaceLat = Math.PI * placeLat / 180;
  const radGuestLat = Math.PI * guestLat / 180;
  const radLatDiff = Math.PI * (guestLat - placeLat) / 180;
  const radLonDiff = Math.PI * (guestLon - placeLon) / 180;

  // Haversine公式
  const a = Math.sin(radLatDiff / 2) ** 2 +
            Math.cos(radPlaceLat) * Math.cos(radGuestLat) *
            Math.sin(radLonDiff / 2) ** 2;
  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
  
  // 地球半径(单位:公里,可按需调整为米等)
  const earthRadius = 6371;
  return earthRadius * c;
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 11:39:46