首页
JAVA笔记
数据库笔记
混乱记忆
小站记
您现在的位置
一分钟 学会 android 高德地图路径规划
简介: android 高德地图路径规划超简单教程。
高德地图SDK路径规划可以支持公共交通、驾车、步行这三类出行方式。

必要条件
需要两个经纬度坐标来构建 LatLonPoint,我们可以通过 POI api 来获得。还不会poi接口的可以直接使用 39.975996,116.317564 39.970561,116.313361
添加高德地图jar:3DMapV3Dev_17.jar AMap_Search_V2.8.0_20160105.jar

计算路径以步行为例


//在Activity 的 onCreate 中初始化 routeSearch 
routeSearch = new RouteSearch(this);
//需要注册回调,这里直接让Activity 实现 OnRouteSearchListener 所以直接可以用this
routeSearch.setRouteSearchListener(this);

LatLonPoint startPoint  = new LatLonPoint(39.975996, 116.317564);
LatLonPoint endPoint = new LatLonPoint(39.970561, 116.313361);
RouteSearch.FromAndTo fromAndTo = new RouteSearch.FromAndTo(startPoint, endPoint);
// RouteSearch.BusDefault;// 公交默认模式
// RouteSearch.DrivingDefault;// 驾车默认模式
// RouteSearch.WalkDefault;// 步行默认模式
WalkRouteQuery query = new WalkRouteQuery(fromAndTo, RouteSearch.WalkDefault);
routeSearch.calculateWalkRouteAsyn(query);// 异步路径规划步行模式查询


OnRouteSearchListener 接口实现如下

private BusRouteResult busRouteResult;// 公交模式查询结果
private DriveRouteResult driveRouteResult;// 驾车模式查询结果
private WalkRouteResult walkRouteResult;// 步行模式查询结果

/**
* 公交路线查询回调
*/
@Override
public void onBusRouteSearched(BusRouteResult result, int rCode) {
}

/**
* 驾车结果回调
*/
@Override
public void onDriveRouteSearched(DriveRouteResult result, int rCode) {
}

/**
* 步行路线结果回调
*/
@Override
public void onWalkRouteSearched(WalkRouteResult result, int rCode) {
dissmissProgressDialog();
if (rCode == 0) {
if (result != null && result.getPaths() != null
&& result.getPaths().size() > 0) {
walkRouteResult = result;
WalkPath walkPath = walkRouteResult.getPaths().get(0);
aMap.clear();// 清理地图上的所有覆盖物
WalkRouteOverlay walkRouteOverlay = new WalkRouteOverlay(this,
aMap, walkPath, walkRouteResult.getStartPos(),
walkRouteResult.getTargetPos());
walkRouteOverlay.removeFromMap();
walkRouteOverlay.addToMap();
walkRouteOverlay.zoomToSpan();
} else {
ToastUtil.show(RouteActivity.this, R.string.no_result);
}
} else if (rCode == 27) {
ToastUtil.show(RouteActivity.this, R.string.error_network);
} else if (rCode == 32) {
ToastUtil.show(RouteActivity.this, R.string.error_key);
} else {
ToastUtil.show(RouteActivity.this, getString(R.string.error_other)
+ rCode);
}
}


路线绘制的实现 --WalkRouteOverlay 
系统提供的 com.amap.api.maps.overlay.WalkRouteOverlay 能够自动绘制线路。
若要自己绘制可直接参考或拷贝 http://www.xiaoyunduo.org/article/323/ 的实现

最近更新