高德导航AMapNaviView线路规划失败?速来看看
根据项目需求,需要地图页展示具体路线及自定义高德导航页面,
接入过程中遇到线路规划失败的问题,接下来给大家讲解一下导航填坑之旅。
使用场景如下:A页面为地图展示页(展示规划好的路线且当前车辆位置)
B页面为实际自定义导航页
原代码:
进入 A 页面调用 AMapNavi.getInstance() 。 此时候如果正确添加了AMapNaviListener 监听,会收到 initNaviSuccess 回调。 进入B页面又调用 AMapNavi.getInstance()。 由于 AMapNavi是单例对象,只在第一次创建对象的时候回调,此时并不会回调 initNaviSuccess。
原因:因AMapNavi为单例对象,在A页面初始化后,在进入B页面时未销毁,同时在B页面又调用了初始化方法,此时不会回调initNaviSuccess。
修正:
方法1:在从A页面跳转到B页面之前,在A页面先调用 AMapNavi.destory(),此时 AMapNavi单例对象被销毁了。然后B页面再去初始化,此时在B页面能收到 initNaviSuccess 回调。
方法2:将AMapNavi初始化提在BaseActivity中,因A页面和B页面同时一个订单及业务,对应规划的路线也是一致的,所以无需加以区分,直接在BaseActivity中初始化后,各个子页面都可直接调用。
所以,当您的 initNaviSuccess 不回调时,请检查:
1、是否在其他页面创建了 AMapNavi 对象。
2、退出页面并未销毁 AMapNavi 对象。
By:yzl