6.8 线路规划
// =========== 得到规划路线 ==========
// -------(1) 得到路线搜索句柄 ----------
RouteSearch routeSearch = new RouteSearch(getApplication());
// -------(2) 设置路径源点和目的坐标点
RouteSearch.FromAndTo ft = new RouteSearch.FromAndTo(_startPoint,_endPoint);
Log.e("Amap", "StartPoint "+_startPoint.getLatitude() +", "+_startPoint.getLongitude());
Log.e("Amap", "EndPoint " + _endPoint.getLatitude() +", " +_endPoint.getLongitude());
// fromAndTo包含路径规划的起点和终点,drivingMode表示驾车模式
// 第三个参数表示途经点(最多支持16个),
// 第四个参数表示避让区域(最多支持32个),第五个参数表示避让道路
// -------(3) 设置查询条件 -----------
RouteSearch.DriveRouteQuery driver_query
= new RouteSearch.DriveRouteQuery(ft, RouteSearch.DrivingDefault, null, null, "");
// -------(4) 设置查询条件回调(主要在地图上绘图) -----------
routeSearch.setRouteSearchListener(new RouteSearch.OnRouteSearchListener() {
@Override
public void onBusRouteSearched(BusRouteResult busRouteResult, int i) {
//公交查询路线规划完成
}
@Override
public void onDriveRouteSearched(DriveRouteResult driveRouteResult, int rCode) {
//驾车查询路线规划完成
Log.e("Amap", "++++ calc end " + rCode);
if (rCode != 1000) {
Log.e("Amap", "onDriveRouteSearched error rcode = "+rCode);
return ;
}
// 主要在地图上 描绘出路径
// 首先清楚地图上之前绘图
mMap.clear();
//这里面可能会有很多种查询的路径,我们默认使用第一个driveRouteResult.getPaths().get(0)
DrivePath drivePath = driveRouteResult.getPaths().get(0);
//开始绘图 创建路径覆盖物
DrivingRouteOverlay drivingRouteOverlay = new DrivingRouteOverlay(
getApplication(),
mMap,
drivePath,
_startPoint,
_endPoint,
null
);
//将路径中转图标去掉,否则影响视图效果
drivingRouteOverlay.setNodeIconVisibility(false);
//将路线覆盖物添加到地图中
drivingRouteOverlay.removeFromMap();
drivingRouteOverlay.addToMap();
//以最适应的缩进展示效果
drivingRouteOverlay.zoomToSpan();
}
@Override
public void onWalkRouteSearched(WalkRouteResult walkRouteResult, int i) {
//步行查询路线规划完成
}
@Override
public void onRideRouteSearched(RideRouteResult rideRouteResult, int i) {
//骑行查询路线规划完成
}
});
//--------(5) 启动路线规划查询
routeSearch.calculateDriveRouteAsyn(driver_query);