Google Maps项目输入不可驾车抵达地点时崩溃的问题求助
解决Google Maps项目无法驾车抵达时崩溃的问题
嘿,这个坑我之前做类似项目的时候也踩过!核心问题就是没处理路线请求失败的情况,导致代码硬去访问不存在的路由数据直接崩了。咱们来快速把它搞定:
核心思路很简单——在处理DirectionsService的返回结果前,先检查请求状态,只有状态正常时才去解析路线数据,否则直接给用户提示即可。
具体修复步骤
- 找到你调用
directionsService.route()的代码块,重点关注它的回调函数 - 在回调里先判断
status是否等于google.maps.DirectionsStatus.OK:- 如果状态为OK,继续执行你原本的逻辑(渲染marker、提取地址信息、驾车时长和距离)
- 如果状态不是OK,说明没有可用的驾车路线,直接显示“此处无法驾车抵达”的提示,绝对不要再去访问
response.routes(这就是崩溃的根源,此时response.routes大概率是undefined)
示例代码
// 假设你已经初始化了DirectionsService实例 const directionsService = new google.maps.DirectionsService(); // 发起驾车路线请求 directionsService.route({ origin: userCurrentLocation, // 你的用户位置变量 destination: userInputAddress, // 用户输入的目标地址 travelMode: google.maps.TravelMode.DRIVING // 明确指定驾车模式 }, (response, status) => { // 先检查请求状态,这一步是关键! if (status === google.maps.DirectionsStatus.OK) { // 正常处理逻辑:提取路线数据 const firstLeg = response.routes[0].legs[0]; const drivingDistance = firstLeg.distance.text; const drivingDuration = firstLeg.duration.text; // 这里放你原本渲染marker、地址信息的代码 console.log(`驾车距离:${drivingDistance},预计时长:${drivingDuration}`); } else { // 处理无法驾车抵达的情况 // 可以用alert弹窗,或者更新页面上的提示元素 alert("此处无法驾车抵达"); // 比如也可以这样:document.getElementById('route-error').textContent = "此处无法驾车抵达"; } });
额外小提示
Google Maps的DirectionsService会返回多种状态码,其中最常见的导致无法驾车的是:
- ZERO_RESULTS:地址有效,但没有可用的驾车路线(比如目标是步行专用岛、限制机动车进入的区域)
- NOT_FOUND:输入的地址无法被地图识别
如果你想做更细分的提示可以针对性处理,但如果只需要统一提示“无法驾车抵达”,直接处理所有非OK的状态就足够了。
内容的提问来源于stack exchange,提问作者Jonas Engberg
相关产品推荐
相关产品推荐

