高德导航断网后恢复网络不重新规划路径问题及解决方案

苹果客户端:用导航模块的应用,当到岔道口不按照规划路线行驶,断网3分钟以上,当网络恢复后切换到前台,导航地图上显示的路线是导航的起点到终点的导航路线,看到自己位置再动,但是偏航后不再重新规划路径,导航页面不再根据道路实际情况刷新,就是回到原来的规划路径也不再刷新导航页面。然后我们又手动调用导航过程中重新规划路线API,规划后导航路线的实际起点是进入导航的起点。一旦出现断网后并且右上角显示从无名道路进入很可能导航页面再也能正常刷新了。请问各位高手这种不以当前位置规划路径的现象,采用何种方法才能在这种情况下重新规划路径,需要调用什么接口。下面是出现问题时的截图:
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

哥终于找到解决方案了:
场景:
导航过程中,把应用切换到后台,断开网络3分钟,并且行驶的路径和原来规划路径不同,再恢复网络,把应用切换到前台,导航显示的路径还是断网前的路线不再重新规划,打电话时也有导航路径不重新规划问题重复。
原因分析:
导航过程中断网偏离原来的规划路径,当网络恢复后报错:2016/04/19 19:11:23:680 NavigationManager.m:-[NavigationManager naviManager:error:]:201 Debug:函数 error.code = -3
error.localizedDescription = 已有ViewController存在,请先执行dismissNaviViewControllerAnimated:方法取消展示
高德地图再也不重新规划路径了。
修改方案:
当发现错误码为-3的导航失败时开关导航就可以。
(void)naviManager:(AMapNaviManager )naviManager error:(NSError )error
{
FLDDLogDebug(@”函数 error.code = %ld\n error.localizedDescription = %@”,(long)error.code,[NSString stringWithFormat:@”%@”,error.localizedDescription]);
if((-3 == error.code) && (self.naviManager != nil))
{ [self.naviManager stopNavi]; [self.naviManager startGPSNavi]; }
}

高德导航地图2.1分模块处理后,解决断网不重新规划路径有所变化。
当断开网络期间偏离了路线需要重新规划路径时,由于没有网络导航规划无法返回。当网络恢复时,没有返回规划响应立即返回。这个版本规划失败返回的比系统网络正常通知还快,千万别判断网络状态再重新规划路径了,不然就不能立即重新导航了。失败时,返回错误码为2.
导航地图模块化后用到的常用地图库有:AMapFoundationKit.framework,AMapNaviKit.framework,AMapSearchKit.framework,MAMapKit.framework,AMapLocationKit.framework,iflyMSC.framework。

- (void)driveManager:(AMapNaviDriveManager *)driveManager onCalculateRouteFailure:(NSError *)error
{
    FLDDLogDebug(@"onCalculateRouteFailure:{%ld - %@}", (long)error.code, error.localizedDescription);
//    if((ReachableViaWiFi == [SingleAsyncSocket sharedInstance].networkStatus) || (ReachableViaWWAN == [SingleAsyncSocket sharedInstance].networkStatus) || (ReachableViaHaveNet == [SingleAsyncSocket sharedInstance].networkStatus))
//    {
//        if(([Singleton sharedInstance].loginOrderStat == LOGIN_ORDER_STATE_SUCESS) && (SOCKECT_CONNECT_SUCESS == [SingleAsyncSocket sharedInstance].socketConnectStat))
//        {
//            [self routeCalculate];
//        }
//    }
    [self routeCalculate];
}

//算路  含起点 终点
- (void)routeCalculate;
{
    self.startPoint = [AMapNaviPoint locationWithLatitude:[Singleton sharedInstance].latitudeAll longitude:[Singleton sharedInstance].longitudeAll];
    FLDDLogDebug(@"函数 _startLacation = %@\n _endLacation = %@",_startPoint,_endPoint);
    if((_startPoint == nil) || (_endPoint == nil))
    {
        return;
    }
    [self.driveManager stopNavi];
    [self routePlanAndStartNavi];
}

- (void)routePlanAndStartNavi {
    [self.driveManager calculateDriveRouteWithStartPoints:@[self.startPoint]
                                                endPoints:@[self.endPoint]
                                                wayPoints:nil
                                          drivingStrategy:self.drivingStrategy];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值