在http://blog.csdn.net/lj102800/article/details/13998543基础上添加
//实例化地图的查询类
mkSearch = new MKSearch();
mkSearch.init(bMapManager, new MySearchListener());
//给起始点构建一个坐标
start=new MKPlanNode();
start.pt=new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6));
end=new MKPlanNode();
end.pt=new GeoPoint(40057031,116307852);
// //行走路线搜索
// mkSearch.walkingSearch(null, start, null, end);
//驾车路线图考虑的优先策略
mkSearch.setDrivingPolicy(MKSearch.EBUS_TIME_FIRST);//采用的是时间优先
//驾乘路线搜索
//参数:起点所在城市,搜索的起点,终点所在城市,搜索的终点
mkSearch.drivingSearch(null, start, null, end);
public class MySearchListener implements MKSearchListener{
@Override
public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
}
@Override
public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
}
//返回驾乘路线搜索结果
@Override
public void onGetDrivingRouteResult(MKDrivingRouteResult result,int iError) {
if(result==null){
return ;
}
RouteOverlay routeOverlay=new RouteOverlay(MainActivity.this, mapView);
//从A点到B点的驾车路线会有多条路线
routeOverlay.setData(result.getPlan(0).getRoute(0));
mapView.getOverlays().add(routeOverlay);
mapView.invalidate();//刷新
}
@Override
public void onGetPoiDetailSearchResult(int type, int iError) {
}
// 返回poi搜索结果
@Override
public void onGetPoiResult(MKPoiResult result, int type, int iError) {
}
@Override
public void onGetRGCShareUrlResult(String arg0, int arg1) {
}
@Override
public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
}
@Override
public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
}
@Override
public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
}
}
效果如下图
驾车路线搜索
步行线路搜索
步行线路搜索与驾车路线搜索类似,只需将mMKSearch.drivingSearch(null, start, null, end)修改为mMKSearch.walkingSearch(null, start, null, end),获取结果的方法改为重写onGetWalkingRouteResult即可。