为什么这里地图路由应用程序和Web不同

问题描述 投票:0回答:1

我们在移动应用程序(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) {

然后我们显示路线。因此,我们有这条路线enter image description here

应用程序方面的相同内容(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

结果我们得到了完全不同的路线:enter image description here

我们找到了默认情况下通过app请求发送的所有参数,并尝试在Web部件上执行相同操作(至少我们在文档中找到了一个,因为它非常空):enter image description here

但没有任何帮助,路由仍然不同。我们猜测网络和移动API在api端使用不同的计算,但我们无法找到任何证据。我们怎样才能让卡车参数的app侧和web侧api给我们相同的路线?这是逻辑的关键部分。谢谢

maps here-api
1个回答
0
投票

基本算法是相同或相同的,但代码库在过去几年中在移动SDK和Web服务之间存在分歧。 Web服务具有较新的功能,如HSP(历史速度模式),但移动SDK服务没有(也不能)。因此,您的结果可能略有不同。

移动SDK路由计算也可以在离线模式下完成,其中算法肯定是不同的。

© www.soinside.com 2019 - 2024. All rights reserved.