这一篇帖子是按照上一篇帖子的逻辑来的,麻烦先看上一篇帖子
《003 走上移动开发之安卓项目实战(百度地图:在地图范围内进行检索与驾车路线搜索)》
如果有什么不懂的请看上一篇帖子
《002 走上移动开发之安卓项目实战(百度地图:给地图添加标注物)》
如果还有什么看不懂的请您先从第一篇文章看起
《001 走上移动开发之安卓项目实战(百度地图:建立百度地图开发环境)》
《http://blog.csdn.net/shuaiyinoo》谢谢
好了接下来今天给大家带来的是三个技术点,
第一个技术点:行走路线
按照我们以前的经验要实现行走路线的搜索第一步先在 onCreate 方法中加入如下搜索代码
//6.0行走路线的搜索
//mapController.setZoom(12);
//在地图范围内实现对物体的搜索
//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);
然后定义一个 MySearchListener implements MKSearchListener 他
实现接口中的 onGetWalkingrouteResult 方法
@Override
public void onGetWalkingRouteResult(MKWalkingRouteResult result, int type) {
//对调用的搜索方法进行回调响应
if(result == null){
return;
}
RouteOverlay routeOverlay = new RouteOverlay(BaiDu_SuYiActivity.this, mapView);
routeOverlay.setData(result.getPlan(0).getRoute(0));
mapView.getOverlays().add(routeOverlay);
//刷新地图
mapView.invalidate();
}
第二个技术点:公交换乘路线
同样第一步,第二步的操作
//7.0公交换乘路线的搜索
//mapController.setZoom(12);
//在地图范围内实现对物体的搜索
//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.transitSearch("北京", start, end);
@Override
public void onGetTransitRouteResult(MKTransitRouteResult result, int type) {
//公交换乘的回调方法
if(result == null){
return;
}
TransitOverlay transitOverlay = new TransitOverlay(BaiDu_SuYiActivity.this, mapView);
transitOverlay.setData(result.getPlan(0));
mapView.getOverlays().add(transitOverlay);
//刷新地图
mapView.invalidate();
}
第三个技术点:公交详细路线
公交详细路线的搜索相对来说复杂一点点
第一步还是不变
//8.0公交详细路线的搜索
mapController.setZoom(12);
//在地图范围内实现对物体的搜索
mkSearch = new MKSearch();
mkSearch.init(bMapManager, new MySearchListener());
//设置回调的行走路线的方法
mkSearch.poiSearchInCity("北京", "300");
第二步首先实现接口里面的这个方法
@Override
public void onGetPoiResult(MKPoiResult result, int type, int iError) {
//对调用的搜索方法进行回调响应
//v8.00
if(result == null||iError != 0){
Toast.makeText(BaiDu_SuYiActivity.this, "对不起,找不到您的结果", 2).show();
return;
}
//定义一个公交线路图描述类
MKPoiInfo mkPoiInfo = null;
//获得公交线路图的总的站点
int totalPoiNum = result.getNumPois();
for(int i = 0;i<totalPoiNum;i++){
mkPoiInfo = result.getPoi(i);
if(mkPoiInfo.ePoiType == 2){
break;
//如果说返回的时候公交的线路图就返回
}
}
mkSearch.busLineSearch("北京", mkPoiInfo.uid);
}
第三步然后再实现里面的下面这个方法
@Override
public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
}
@Override
public void onGetBusDetailResult(MKBusLineResult result, int type) {
if(result == null||type != 0){
Toast.makeText(BaiDu_SuYiActivity.this, "对不起,找不到您的结果", 2).show();
return;
}
RouteOverlay routeOverlay = new RouteOverlay(BaiDu_SuYiActivity.this, mapView);
routeOverlay.setData(result.getBusRoute());
//清空所有的公交信息
mapView.getOverlays().clear();
mapView.getOverlays().add(routeOverlay);
mapView.invalidate();
mapView.getController().animateTo(result.getBusRoute().getStart());
}
这样这三个知识点就算完成了。