如何在谷歌方向 API 中获取两点之间的收费站数量?

4

我需要在从A点到B点开车时获取收费站的数量。我正在使用谷歌方向API进行操作。 API将公路是否为收费公路的信息提供在响应中的html_instructions标记中,但是收费公路可能包含多个收费站,有没有办法计算它们的数量。


我认为这个问题是基于Android的,我现在意识到了。我之前用JavaScript回答了这个问题。希望这能给你一些提示。 - Deep 3015
@Deep3015您好,感谢您的回答,但我有一个问题:单个收费公路是否可以包含多个收费站? - megamind
1
我不明白你的问题。什么是“_单收费公路_”,它是起点到终点的路径还是路线的子部分?如果它是子部分,那么“_单收费公路是否可以包含多个收费站_”就不可能了。 - Deep 3015
@Deep3015 我有这个疑问,因为我知道有一条路线有多个收费站(例如从哈尔德瓦尼到德里),但是响应只显示了一个收费公路。 - megamind
1
可能是谷歌记录没有更新,也可能是当地税收的原因。 - Deep 3015
1个回答

5
使用directions-draggable代码。为了计算途中的收费次数,您需要在myroute.legs[i].steps[j].instructions中查找它们,这是方向显示服务的结果。我使用正则表达式来查找toll road

请查看演示

以下是代码:
function containsWord(string, word) {
    return new RegExp('(?:[^.\w]|^|^\\W+)' + word + '(?:[^.\w]|\\W(?=\\W+|$)|$)').test(string);
}
function computeTotalDistance(result) {
  var total = 0;
  var myroute = result.routes[0];
  var totalTolls=0;
  for (var i = 0; i < myroute.legs.length; i++) {
  //console.log(myroute.legs[i].steps);
  for(var j=0;j<myroute.legs[i].steps.length;j++){
  //console.log(myroute.legs[i].steps[j].instructions);
  if(containsWord(myroute.legs[i].steps[j].instructions.toLowerCase(), 'toll road')){
  totalTolls+=1;
  }

  }
    total += myroute.legs[i].distance.value;
  }
  total = total / 1000;
  document.getElementById('total').innerHTML = total + ' km';
  document.getElementById('totalTollCount').innerHTML = totalTolls ;
}

这个解决方案可能存在问题,在路线的某些部分,如果有一个以上的收费站,它只会计算一个。 - Lucas Prestes
@Deep,在一个步骤内有两个或更多的工具的可能性吗? - josiebhai

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接