003 走下移动开发之安卓项目实战(百度map:在map范围内进行检索与驾车路线搜索)

003 走上移动开发之安卓项目实战(百度地图:在地图范围内进行检索与驾车路线搜索)

在上一篇文章中给大家带来了给地图如何添加标注物,这篇文章将要告诉大家如何在地图的范围内进行检索于对路线进行搜索

如果有什么不懂的请看上一篇帖子

002 走上移动开发之安卓项目实战(百度地图:给地图添加标注物)

如果还有什么看不懂的请您先从第一篇文章看起

001 走上移动开发之安卓项目实战(百度地图:建立百度地图开发环境)

还请大家注意在文章进行转载的时候麻烦注明出处

《http://blog.csdn.net/shuaiyinoo》谢谢


第一个:接下来正式开始给大家带来新的知识点,首先给大家带来的是如何在地图中进行检索

在进行地图检索的时候其实特别的简单,你只需要自定义一个 MySearchListener  ,去实现  MKSearchListener  这个有百度地图提供的API即可,当然里面还得实现类里面的方法

    //搜索对象的实现
    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 type) {
			//对调用的搜索方法进行回调响应
			if(result == null){
				return;
			}
			RouteOverlay routeOverlay = new RouteOverlay(BaiDu_SuYiActivity.this, mapView);
			//里面的参赛之所以填0是应为我们只需要返回第一条线路
			routeOverlay.setData(result.getPlan(0).getRoute(0));
			mapView.getOverlays().add(routeOverlay);
			mapView.invalidate();
		}
		@Override
		public void onGetPoiDetailSearchResult(int arg0, int arg1) {
			
		}
		@Override
		public void onGetPoiResult(MKPoiResult result, int type, int iError) {
			//对调用的搜索方法进行回调响应
			if(result == null){
				return;
			}
			PoiOverlay poiOverlay = new PoiOverlay(BaiDu_SuYiActivity.this, mapView);
			poiOverlay.setData(result.getAllPoi());
			mapView.getOverlays().add(poiOverlay);
			mapView.invalidate();
		}
		@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) {
			
		}
    }
注意别忘了定义搜索对象,在类的最前面定义

	//定义搜索对象
	private MKSearch mkSearch ;


然后在 onCreate 方法中加入如下代码

比如我要以*为中心搜索周围5000M的厕所就可以用

mkSearch.poiSearchNearBy("厕所", new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6)), 5000);
即可,这里我就不一一列举。


//v4.00
        //mapController.setZoom(14);
        //在地图范围内实现对物体的搜索
        //mkSearch = new MKSearch();
        //mkSearch.init(bMapManager, new MySearchListener());
        //这个方法表示根据中心点搜索周边的内容
        //mkSearch.poiSearchNearBy("厕所", new GeoPoint((int)(39.915*1E6),(int)(116.404*1E6)), 5000);

第二个:要给大家介绍的就是对驾车路线的搜索

第一步跟    《第一个:在地图范围内搜索一样》自定义一个 MySearchListener  ,去实现  MKSearchListener  这个有百度地图提供的API即可,当然里面还得实现类里面的方法

然后同样在 onCreate 方法中加入如下代码

//v5.00
	    mapController.setZoom(14);
	    //在地图范围内实现对物体的搜索
	    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.setDrivingPolicy(MKSearch.EBUS_TIME_FIRST);
	    //调用路线的回调方法
	    mkSearch.drivingSearch(null, start, null, end);

注意这里要在类的最上面定义两个点,起始点和结束点

	//定义一个起点
	private MKPlanNode start;
	//定义一个终点
	private MKPlanNode end;

这里要注意的有两个地方,第一个就是线路的优先顺序

在mkSearch.setDrivingPolicy()  这个方法中有多种类型可以供选择,百度地图提供的API中有如下选择对象-->官方文档地址

003 走下移动开发之安卓项目实战(百度map:在map范围内进行检索与驾车路线搜索)

然后要注意的是  drivingSearch 方法中的参数要注意

003 走下移动开发之安卓项目实战(百度map:在map范围内进行检索与驾车路线搜索)


最后:给大家说两句说说,其实我这写的只是皮毛中的皮毛,仅仅给那些跟我水平一样的人提供一些方便,相互的学习共同成长,还请那些大牛,大卡,们不要见笑

每天在睡觉的时候,希望大家明白,明天又是美好的一天哦......