根據項目需求,需要地圖頁展示具體路線及自定義高德導航頁面,
接入過程中遇到線路規划失敗的問題,接下來給大家講解一下導航填坑之旅。
使用場景如下: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