如何修复Google Maps路线URL中规避高速的参数错误?
问题修正方案
你的代码错误在于查询参数的拼接方式不符合URL规范,Google Maps无法识别用/开头的参数,同时dirflg的参数格式也有误。
错误原因
- URL的查询参数必须以
?开头(首次添加参数时),后续参数用&连接,你用/&会把参数当成路径的一部分,导致Google Maps无法解析。 dirflg参数中,h代表规避高速公路,t代表步行模式,两者组合不需要加逗号,直接写ht即可;如果只是需要规避高速,单独用h就够了(电动车路线默认是驾车模式,无需额外指定步行)。
修正后的代码段
替换你出错的代码部分为:
if (avoidHighwaysStatut.checked) { // 首次添加查询参数用?,dirflg=h表示规避高速公路 googleMapsLink += "?dirflg=h"; }
如果后续需要添加其他查询参数(比如偏好最短路线),可以用&连接,示例:
if (avoidHighwaysStatut.checked) { googleMapsLink += "?dirflg=h"; // 追加偏好最短路线参数 googleMapsLink += "&route=shortest"; }
完整修正后的代码
document.getElementById('openMapBtn').addEventListener('click', function() { var googleMapsLink = "https://www.google.com/maps/dir/"; // 添加起点 googleMapsLink += encodeURIComponent(document.getElementById("from").value); // 添加中间充电站 infosBornes.forEach(function(borne) { googleMapsLink += "/" + encodeURIComponent(borne.adresse); }); // 添加终点 googleMapsLink += "/" + encodeURIComponent(document.getElementById("to").value); // 判断是否规避高速 var avoidHighwaysStatut = document.getElementById('avoidHighways'); if (avoidHighwaysStatut.checked) { googleMapsLink += "?dirflg=h"; } // 在新窗口打开地图 window.open(googleMapsLink); });
内容的提问来源于stack exchange,提问作者bryan mottais
相关产品推荐
相关产品推荐

