我们在移动应用程序(Android和Ios)和Web应用程序(客户端仪表板)上都有api - 我们在api请求中添加卡车参数时遇到问题 - 有时候移动API和Web API的路由不同,我们使用完全相同参数,最终路线中的bu仍然不同,我们不知道还有什么要改变才能使它们相同。这是一个测试示例:
point1 = 37.7793808,-122.4184174(San Francisco),
point2 = 40.7559247,-73.9846107(New York),
vehicleWidth = 300 feet,
vehicleHeight = 400 feet,
vehicleLength = 200 feet,
limitedVehicleWeight = 50 lbs,
网页部分请求:
var routingParameters = {
'mode': 'fastest;truck;traffic:enabled;boatFerry:-1',
'representation': 'display',
'routeAttributes': 'waypoints,summary,shape,legs'
};
var feet = 0.3048;
var ton = 0.00045359237;
routingParameters.vehicleWidth = (300 * feet);
routingParameters.vehicleHeight = (400 * feet) + 'm';
routingParameters.vehicleLength = (200 * feet) + 'm';
routingParameters.limitedVehicleWeight = (50 * ton) + 't';
for (var x = 0; x < points.length; x++) {
var point = points[x];
routingParameters['waypoint' + x] = 'geo!' + point.lt + ',' + point.lng;
}
var router = platform.getRoutingService();
var onResult = function (result) {
应用程序方面的相同内容(Ios示例):v
ar stops = [NMAWaypoint.init(geoCoordinates: NMAGeoCoordinates(latitude: Double(trip.startLatitude) ?? 0, longitude: Double(trip.startLongitude) ?? 0), waypointType: .stopWaypoint)]
stops.append(NMAWaypoint.init(geoCoordinates: NMAGeoCoordinates(latitude: Double(trip.endLatitude) ?? 0, longitude: Double(trip.endLongitude) ?? 0), waypointType: .stopWaypoint) )
let routingMode = NMARoutingMode.init(routingType: NMARoutingType.fastest, transportMode: NMATransportMode.truck, routingOptions: NMARoutingOption.avoidBoatFerry)
let dimensions = TruckDimensions.getSingleEntity()
routingMode.vehicleWidth = dimensions.width.floatValue * feet
routingMode.vehicleHeight = dimensions.height.floatValue * feet
routingMode.vehicleLength = dimensions.length.floatValue * feet
routingMode.limitedVehicleWeight = dimensions.weight.floatValue * ton
let penalty = NMADynamicPenalty.init()
penalty.trafficPenaltyMode = NMATrafficPenaltyMode.optimal
coreRouter.dynamicPenalty = penalty
progress = coreRouter.calculateRoute(withStops: stops, routingMode: routingMode) { (result, error) in
我们找到了默认情况下通过app请求发送的所有参数,并尝试在Web部件上执行相同操作(至少我们在文档中找到了一个,因为它非常空):
但没有任何帮助,路由仍然不同。我们猜测网络和移动API在api端使用不同的计算,但我们无法找到任何证据。我们怎样才能让卡车参数的app侧和web侧api给我们相同的路线?这是逻辑的关键部分。谢谢
基本算法是相同或相同的,但代码库在过去几年中在移动SDK和Web服务之间存在分歧。 Web服务具有较新的功能,如HSP(历史速度模式),但移动SDK服务没有(也不能)。因此,您的结果可能略有不同。
移动SDK路由计算也可以在离线模式下完成,其中算法肯定是不同的。