Android端Google Maps Directions API高速路段识别方案问询
解决Google Maps Directions API判断收费高速路段的问题
我刚好之前做过类似的需求,给你几个可行的方案:
方案一:利用Directions API自带的toll_info字段
你现在的响应里没看到这个字段,大概率是因为当前请求的路线里没有收费路段,或者你需要确保请求时的参数设置正确:
- 确保请求的
travelMode设置为DRIVING(只有驾车路线才会返回收费相关信息) - 当路线中的某段是收费高速时,响应里对应的
step对象会包含toll_info字段,里面会有该路段的收费类型、预估价格等信息。比如典型的toll_info结构大概是这样:
"toll_info": { "price": [ { "currency": "USD", "value": 5.25 } ] }
你可以遍历每个step,检查是否存在toll_info字段,以此判断该段是否为收费路段。
方案二:结合Google Maps Roads API补充道路元数据
如果Directions API的toll_info覆盖不够全面(比如某些地区的收费路段没被标记),可以用Roads API的Get Road Metadata接口:
- 把你解码得到的连续LatLng坐标列表,按接口要求的格式传给Roads API
- 接口会返回对应道路的详细属性,其中包括
is_toll_road字段,直接告诉你该道路是否为收费公路 - 注意:这个方案需要额外的API调用,要关注配额和费用,同时要处理坐标点的批量请求限制(一次最多传100个点)
小提示
- 发起Directions API请求时,加上
region参数(比如region=cn针对中国地区),可以让收费信息的返回更精准,因为不同地区的收费规则差异很大 - 如果你只是想在路径上标记收费路段,也可以直接用Android Maps SDK里的
Polyline结合toll_info的判断结果,给收费路段设置不同的颜色,直观区分
内容的提问来源于stack exchange,提问作者LLL
相关产品推荐
相关产品推荐

