官方參考資料地址:(http://lbs.amap.com/api/android-sdk/guide/route-plan/drive/)
官方文檔:http://a.amap.com/lbs/static/unzip/Android_Map_Doc/index.html
請注意:使用上述功能需要下載地圖SDK,導入搜索功能的jar包。
Activity關鍵代碼:
/*初始化 搜索路線所需的類*/
private void initRouteSearch() {
RouteSearch routeSearch = new RouteSearch(this);
routeSearch.setRouteSearchListener(this);
if (shopLatitude != -1 && shopLongitude != -1) {
fromAndTo = new RouteSearch.FromAndTo(new LatLonPoint(fromLatitude, fromLongitude),
new LatLonPoint(shopLatitude, shopLongitude));
}
}
/*計算步行路線*/
private void calculateWalkRoute() {
showProgress("正在加載...");
//初始化query對象,fromAndTo是包含起終點信息,walkMode是步行路徑規劃的模式
RouteSearch.WalkRouteQuery walkRouteQuery = new RouteSearch.WalkRouteQuery(
fromAndTo, RouteSearch.WALK_DEFAULT);
routeSearch.calculateWalkRouteAsyn(walkRouteQuery);
}
/*計算公交路線*/
private void calculateBusRoute() {
showProgress("正在加載...");
// fromAndTo包含路徑規劃的起點和終點,RouteSearch.BusLeaseWalk表示公交查詢模式
// 第三個參數表示公交查詢城市區號,第四個參數表示是否計算夜班車,0表示不計算,1表示計算
RouteSearch.BusRouteQuery busRouteQuery = new RouteSearch.BusRouteQuery(
fromAndTo, RouteSearch.BUS_DEFAULT, "020", 1);
routeSearch.calculateBusRouteAsyn(busRouteQuery);
}
/*計算自駕路線*/
private void calculateCarRoute() {
showProgress("正在加載...");
// fromAndTo包含路徑規劃的起點和終點,drivingMode表示駕車模式
// 第三個參數表示途經點(最多支持16個),第四個參數表示避讓區域(最多支持32個),第五個參數表示避讓道路
RouteSearch.DriveRouteQuery driveRouteQuery = new RouteSearch.DriveRouteQuery(
fromAndTo, RouteSearch.DRIVING_MULTI_STRATEGY_FASTEST_SHORTEST_AVOID_CONGESTION, null, null, "");
routeSearch.calculateDriveRouteAsyn(driveRouteQuery);
}
@Override
public void onBusRouteSearched(BusRouteResult busRouteResult, int i) {
dismissProgress();
if (i==1000){
//添加的方式都一樣,只是Overlay不一樣;
}
}
@Override
public void onDriveRouteSearched(DriveRouteResult driveRouteResult, int i) {
dismissProgress();
if (i==1000){
DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(
this, aMap, drivePath, result.getStartPos(), result.getTargetPos());
aMap.clear();
drivingRouteOverlay.removeFromMap();
drivingRouteOverlay.addToMap();
drivingRouteOverlay.zoomToSpan();
}
}
@Override
public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) {
dismissProgress();
if (i == 1000) {//1000代表成功
//在地圖上繪製路徑:
WalkRouteOverlay walkRouteOverlay = new WalkRouteOverlay(this, aMap, walkPath, walkRouteResult.getStartPos(), walkRouteResult.getTargetPos());
aMap.clear();
walkRouteOverlay.removeFromMap();//去掉Overlay上所有的Marker。
walkRouteOverlay.addToMap();//將Overlay添加到地圖上顯示
walkRouteOverlay.zoomToSpan();//調整地圖能看到起點和終點
}
}
@Override
public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {
}