預置條件
請在您工程的 AndroidManifest.xml 中配置聲明導航元件 Activity:
android:name="com.amap.api.navi.AmapRouteActivity"
android:theme="@android:style/Theme.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize|navigation" />
無起終點啟動導航元件
通過AmapNaviPage來啟動導航元件,它是一個單例:
//建構導航元件配置類,沒有傳入起點,是以起點預設為 “我的位置”
AmapNaviParams params = new AmapNaviParams(null, null, null, AmapNaviType.DRIVER, AmapPageType.ROUTE);
//啟動導航元件
AmapNaviPage.getInstance().showRouteActivity(getApplicationContext(), params, null);
傳入起終點啟動導航元件
通過設定起點、途徑點(最多支援三個)、終點啟動導航元件;每個點資料可以通過經緯度、名稱、高德 POIId 來描述,其參數規則如下:經緯度資料為必填參數;
名稱是可選參數僅用于顯示地點名稱,如果設定了名稱參數,會優先顯示所設定的名稱,如果不傳名稱将使用預設值,如“終點”、“途徑點1”;
高德 POIId 是可選參數,但強烈建議傳入,因為其可以有效的減少繞路情況的出現。設定高德 POIId 來啟動導航元件時,将會執行 POI 的精确檢索,獲得 POI 詳情後不僅會輔助算路,也會覆寫傳入的經緯度和名稱兩個參數。
當不設定起點資訊時,會采用使用者目前位置作為起點,并顯示地點名稱為“我的位置”。
//起點
Poi start = new Poi("北京首都機場", new LatLng(40.080525,116.603039), "B000A28DAE");
//途經點
List poiList = new ArrayList();
poiList.add(new Poi("故宮", new LatLng(39.918058,116.397026), "B000A8UIN8"));
//終點
Poi end = new Poi("北京大學", new LatLng(39.941823,116.426319), "B000A816R6");
// 元件參數配置
AmapNaviParams params = new AmapNaviParams(start, poiList, end, AmapNaviType.DRIVER, AmapPageType.ROUTE);
// 啟動元件
AmapNaviPage.getInstance().showRouteActivity(getApplicationContext(), params, null);
退出導航元件
導航元件調起之後,使用者可以點選“路徑規劃頁面”左上角的回退按鈕來退出導航元件,開發者也可以根據需要調用如下函數退出導航元件。
//退出導航元件
AmapNaviPage.getInstance().exitRouteActivity();
導航元件回調方法說明
INaviInfoCallback接口中提供了一系列回調方法,可以實作該接口後,将回調執行個體通過啟動元件方法的最後一個參數傳入,關鍵回調如下(注意:使用導航元件以後,任然可以使用AMapNavi注冊導航回調,監聽更多導航資訊)
void onGetNavigationText(String s);
void onLocationChange(AMapNaviLocation location);
void onExitPage(int pageType);
void onStrategyChanged(int strategy);
View getCustomNaviBottomView();
View getCustomNaviView();
void onMapTypeChanged(int mapType);
View getCustomMiddleView();
void onNaviDirectionChanged(int naviMode);
void onDayAndNightModeChanged(int mode);
void onBroadcastModeChanged(int mode);
void onScaleAutoChanged(boolean enable);