新手求助:如何在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
相关产品推荐
相关产品推荐

