0

在尝试计算这条路线时,我收到了一个 VIOLATES_OPTIONS 错误,其中包含违规:[BLOCKED_ROADS]。

高级 Android SDK 3.17

路线选择:

val routeOptions = RouteOptions().apply {
    transportMode = RouteOptions.TransportMode.TRUCK
    truckHeight = vehicle.height
    truckLength = vehicle.length
    truckWidth = vehicle.width
    truckWeightPerAxle = 10.0f
    truckAxleCount = 2
    truckTunnelCategory = RouteOptions.TunnelCategory.UNDEFINED
    speedProfile = RouteOptions.SpeedProfile.FAST
    routeType = RouteOptions.Type.FASTEST
}

动态惩罚:

val dynamicPenalty = DynamicPenalty().apply {
    trafficPenaltyMode = Route.TrafficPenaltyMode.OPTIMAL
}

coreRouter.setDynamicPenalty(dynamicPenalty)

我已经通过调整一些参数发现问题似乎与车辆长度有关(可能因车辆而异),但仍有一些问题:

  • 有没有办法(以编程方式)找出问题所在或更准确的原因?文件说“该路线使用的道路被动态处罚封锁。”但究竟是什么处罚?此外,它似乎与车辆长度有关,而不是动态惩罚之一(在没有设置任何这些或将交通惩罚设置为禁用时也会发生错误)。我们有很多用户,每次发生此错误时手动调查这些错误并不是很可行。

  • 有没有办法/计划包括违规发生地点的坐标?这将是非常有用的 IMO。我想不出解决方法/处理此错误,因为我不知道问题发生的确切位置,因此如果我们想手动修复它,也无法找出根本原因/将某个区域列入黑名单。

  • 我的最后一个也是最重要的问题:我能做些什么来获得替代路线(避免有问题/违规的区域)?

4

1 回答 1

0

通过进一步调查,我们发现了以下几点。这是预期的行为,您可以通过提供 API 密钥来检查以下请求。

https://router.hereapi.com/v8/routes?origin=42.695,2.87907&transportMode=truck&destination=41.3947,2.18237&truck[length]=1400&return=polyline,actions,instructions,summary&apikey={YOUR-API-KEY}

发生这种情况是因为巴塞罗那对卡车长度有时间限制。要处理这种情况,您可以编写:

public void onCalculateRouteFinished(List<RouteResult> routeResults,RoutingError routingError)
{if (routingError == RoutingError.NONE || routingError == RoutingError.VIOLATES_OPTIONS) // added for violated options
    {
    m_route = routeResults.get(0).getRoute();
    // continued work this route
    .....
    if( routingError.toString() != "" )
    { 
    Toast.makeText(m_activity, "Route calculation returned with code " + routingError.toString() );
    }
    }
}
于 2021-08-25T06:18:48.623 回答