Android 路由计算失败,正在模拟重新路由
我正在使用Skobbler示例Android SDK(从下载)编写导航应用程序,如果我从Android studio运行应用程序,它会非常完美,但当我使用生成的APK安装应用程序时,它通常在路由计算和日志中失败,我得到的结果是:Android 路由计算失败,正在模拟重新路由,android,skmaps,skobbler-maps,Android,Skmaps,Skobbler Maps,我正在使用Skobbler示例Android SDK(从下载)编写导航应用程序,如果我从Android studio运行应用程序,它会非常完美,但当我使用生成的APK安装应用程序时,它通常在路由计算和日志中失败,我得到的结果是: 06-04 10:09:43.435 6285-6285/com.skobbler.sdkdemo D/SKMaps﹕ SKMapSurfaceView----@setZoom 11.0 06-04 10:09:43.435 6285-6285/com.s
06-04 10:09:43.435 6285-6285/com.skobbler.sdkdemo D/SKMaps﹕ SKMapSurfaceView----@setZoom 11.0
06-04 10:09:43.435 6285-6285/com.skobbler.sdkdemo D/SKMaps﹕ SKMapSurfaceView---- centerMapOnPosition [101.6156902,3.0311728]
06-04 10:09:43.435 6285-6285/com.skobbler.sdkdemo D/SKMaps﹕ SKRouteManager---- @clearAllRoutesFromCache
06-04 10:09:43.436 6285-6285/com.skobbler.sdkdemo D/SKMaps﹕ SKRouteManager---- @calculateRoute SKRouteSettings [startCoordinate=[101.6156902,3.0311728], destinationCoordinate=[101.6156,3.03496], routeMode=CAR_FASTEST, alternativeRouteModes=null, routeConnectionMode=HYBRID, downloadRouteCorridor=true, routeCorridorWidthInMeters=2000, waitForCorridorDownload=false, destinationIsPoint=true, tollRoadsAvoided=false, highWaysAvoided=false, avoidFerries=false, noOfRoutes=1, countryCodesReturned=false, extendedPointsReturned=false, viaPoints=null, useRoadSlopes=false, exposeRoute=true, filterAlternatives=false, requestAdvices=true, bicycleWalk= false, bicycleCarryAvoided= false]
06-04 10:09:43.437 6285-6285/com.skobbler.sdkdemo D/SKMaps﹕ SKRouteManager----@clearCurrentRoute
06-04 10:09:43.437 6285-6285/com.skobbler.sdkdemo D/SkobblerNG﹕ clear route
06-04 10:09:43.437 6285-6285/com.skobbler.sdkdemo D/SkobblerNG﹕ clear route final
06-04 10:09:43.439 6285-6285/com.skobbler.sdkdemo D/SKMaps﹕ SKUtils----Return calculated device type HIGH
06-04 10:09:43.440 6285-6285/com.skobbler.sdkdemo D/SKMaps﹕ SKRouteManager---- Calculate route setroute SKRouteSettings [startCoordinate=[101.6156902,3.0311728], destinationCoordinate=[101.6156,3.03496], routeMode=CAR_FASTEST, alternativeRouteModes=null, routeConnectionMode=HYBRID, downloadRouteCorridor=true, routeCorridorWidthInMeters=2000, waitForCorridorDownload=false, destinationIsPoint=true, tollRoadsAvoided=false, highWaysAvoided=false, avoidFerries=false, noOfRoutes=1, countryCodesReturned=false, extendedPointsReturned=false, viaPoints=null, useRoadSlopes=false, exposeRoute=true, filterAlternatives=false, requestAdvices=true, bicycleWalk= false, bicycleCarryAvoided= false]
06-04 10:09:43.440 6285-6285/com.skobbler.sdkdemo D/SkobblerNG﹕ Java_com_skobbler_ngx_routing_SKRouteManager_setroute
06-04 10:09:43.440 6285-6285/com.skobbler.sdkdemo D/SkobblerNG﹕ No Via points added to the route
06-04 10:09:43.442 6285-6285/com.skobbler.sdkdemo D/SkobblerNG﹕ Java_com_skobbler_ngx_routing_SKRouteManager_setroute final
06-04 10:09:43.445 6285-6344/com.skobbler.sdkdemo D/SKMaps﹕ SKRouteManager---- @onRouteCalculationFailed called with SKRoutingErrorCode =ROUTE_CANNOT_BE_CALCULATED
06-04 10:09:43.447 6285-6344/com.skobbler.sdkdemo W/SKMaps﹕ SKRouteManager---- @onAllRoutesCompleted called
另外,在SKNavigationType.SIMULATION
模式下使用导航时,是否有任何方法模拟重新路由?
我尝试在onCurrentPositionUpdate(SKPosition-currentPosition)
方法中显式更改当前用户位置,但不起作用:
@Override
public void onCurrentPositionUpdate(SKPosition currentPosition) {
iteration++;
this.currentPosition = currentPosition;
if (mapView != null) {
if(iteration >= 5) {
Toast.makeText(MapActivity.this, "Changed location", Toast.LENGTH_LONG).show();
this.currentPosition = new SKPosition();
this.currentPosition.setCoordinate(new SKCoordinate(101.618133, 3.025863));
}
mapView.reportNewGPSPosition(this.currentPosition);
}
}
为了模拟重路由,您必须使用SKNavigationManager中的blockRoad方法。请检查此处的文档:要模拟重新路由,必须使用SKNavigationManager中的blockRoad方法。请检查此处的文档:@SylviA您的评论应该是答案,因为它正在使用blockRoadmethod@Waqas你有没有找出你的路线不可能是计算错误的原因?我已经看到一些问题,如果我尝试计算的任何路线都包含mapview当前未缓存的点,那么这些路线都会失败。通常在这种情况下,HYBRID或ONLINE的connectionMode应该规定SDK调用Skobbler API来确定路由信息,但我认为在我的情况下不会发生这种情况,我想知道这是否是您所经历的。谢谢你的洞察力!