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

新手求助:如何在Google Distance Matrix API的JS代码中添加条件判断

如何在Google Distance Matrix API调用中添加距离判断的if-else语句

兄弟别慌!作为JS新手,这个判断逻辑的插入位置其实非常明确——必须等API成功返回距离数据之后,也就是当你拿到计算好的距离值的那一段代码里。我给你拆解清楚,再给你完整的示例:

核心思路

Google Distance Matrix API是异步请求,你得等服务器把计算好的距离和时间返回来,才能做判断。所以if-else绝对不能写在请求API的代码前面,一定要放在处理API响应的回调函数里。

完整示例代码(用fetch调用)

假设你的基础代码是这样的,我把判断逻辑直接插对位置:

// 替换成你的起点、终点和API密钥
const origin = "北京天安门";
const destination = "北京故宫";
const apiKey = "你的API密钥";

// 发起API请求
fetch(`https://maps.googleapis.com/maps/api/distancematrix/json?origins=${encodeURIComponent(origin)}&destinations=${encodeURIComponent(destination)}&mode=driving&key=${apiKey}`)
  .then(response => response.json())
  .then(data => {
    // --------------------------
    // 这里就是插if-else的黄金位置!
    // --------------------------
    if (data.status === "OK") {
      // 先把API返回的米转成公里(API默认返回的是米哦)
      const distanceInKm = data.rows[0].elements[0].distance.value / 1000;
      const durationText = data.rows[0].elements[0].duration.text;

      // 你的距离判断逻辑
      if (distanceInKm < 10) {
        console.log(`✨ 短途出行:仅${distanceInKm.toFixed(1)}公里,预计${durationText}`);
        // 这里可以写你要返回的结果,比如更新页面内容、返回特定值等
      } else if (distanceInKm >= 10 && distanceInKm < 50) {
        console.log(`🚗 中等距离:${distanceInKm.toFixed(1)}公里,预计${durationText}`);
      } else {
        console.log(`🚚 长途行程:${distanceInKm.toFixed(1)}公里,预计${durationText}`);
      }
    } else {
      // 处理API调用失败的情况
      console.error("API调用出错啦:", data.status);
    }
  })
  .catch(error => console.error("网络请求失败:", error));

如果用Google Maps JS SDK的情况

要是你用的是官方的JS SDK,逻辑完全一样,把判断放在回调函数里拿到有效数据之后:

function calculateDrivingDistance() {
  const service = new google.maps.DistanceMatrixService();
  service.getDistanceMatrix(
    {
      origins: ["北京天安门"],
      destinations: ["北京故宫"],
      travelMode: google.maps.TravelMode.DRIVING,
    },
    (response, status) => {
      if (status === "OK") {
        const distanceInKm = response.rows[0].elements[0].distance.value / 1000;
        const durationText = response.rows[0].elements[0].duration.text;

        // 同样在这里插你的if-else
        if (distanceInKm < 10) {
          alert(`短途行程:${distanceInKm.toFixed(1)}公里,${durationText}`);
        } else {
          alert(`长途行程:${distanceInKm.toFixed(1)}公里,${durationText}`);
        }
      }
    }
  );
}

关键注意点

  • 先判断API状态:一定要先检查data.status或者status是否为OK,避免API调用失败时拿不到距离值报错。
  • 单位转换:API返回的distance.value是米,记得除以1000转成公里再和你的阈值(10km)对比。
  • 异步逻辑:别把判断写在请求API的代码外面,因为JS是异步的,外面的代码会先执行,此时还没拿到距离数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:08:17