在上一篇文章中給大家帶來了給地圖如何添加標註物,這篇文章將要告訴大家如何在地圖的範圍內進行檢索於對路線進行搜尋
如果有什麼不懂的請看上一篇文章
《002 走上移動開發之安卓項目實戰(百度地圖:給地圖添加標註物)》
如果還有什麼看不懂的請您先從第一篇文章看起
《001 走上移動開發之安卓項目實戰(百度地圖:建立百度地圖開發環境)》
還請大家注意在文章進行轉載的時候麻煩註明出處
《http://blog.csdn.net/shuaiyinoo》謝謝
第一個:接下來正式開始給大家帶來新的知識點,首先給大家帶來的是如何在地圖中進行檢索
在進行地圖檢索的時候其實特別的簡單,你只需要自訂一個 MySearchListener ,去實現 MKSearchListener 這個有百度地圖提供的API即可,當然裡面還得實作類別裡面的方法
//搜尋對象的實現 public class MySearchListener implements MKSearchListener{@Overridepublic void onGetAddrResult(MKAddrInfo arg0, int arg1) {}@Overridepublic void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {}@Overridepublic 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();}@Overridepublic void onGetPoiDetailSearchResult(int arg0, int arg1) {}@Overridepublic 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();}@Overridepublic void onGetRGCShareUrlResult(String arg0, int arg1) {}@Overridepublic void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {}@Overridepublic void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {}@Overridepublic 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中有如下選擇對象-->官方文檔地址
然後要注意的是 drivingSearch 方法中的參數要注意
最後:給大家說兩句說說,其實我這寫的只是皮毛中的皮毛,僅僅給那些跟我水平一樣的人提供一些方便,相互的學習共同成長,還請那些大牛,大卡,們不要見笑
每天在睡覺的時候,希望大家明白,明天又是美好的一天哦......