官方参考资料地址:(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) {
}