這一篇文章是按照上一篇文章的邏輯來的,麻煩先看上一篇文章
《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 方法
@Overridepublic 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);
@Overridepublic 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");
第二步首先實現介面裡面的這個方法
@Overridepublic void onGetPoiResult(MKPoiResult result, int type, int iError) {//對調用的搜尋方法進行回調響應//v8.00if(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);}
第三步然後再實現裡面的下面這個方法
@Overridepublic void onGetAddrResult(MKAddrInfo arg0, int arg1) {}@Overridepublic 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());}
這樣這三個知識點就算完成了。