android百度地图之公交线路详情搜索
本篇文章可以实现百度公交线路搜索,可以选择多条线路,具体实现代码如下:
一、公交线路详情检索
获取公交线路的详情主要分来两步,1.获取公交线路的Uid,2.通过Uid获取公交线路详情。
1.获取公交线路的Uid:
/* *获得公交线路图的Uid,并且根据系Uid发起公交线路详情的检索 * *@see *com.baidu.mapapi.MKSearchListener#onGetPoiResult(com.baidu.mapapi *.MKPoiResult,int,int) */ @Override publicvoidonGetPoiResult(MKPoiResultarg0,intarg1,intarg2){ //TODOAuto-generatedmethodstub if(arg0==null||arg2!=0){ Toast.makeText(MainActivity.this,"未找到结果",1); return; } //定义一个公交线路描述类 MKPoiInfomkPoiInfo=null; //获得本次就爱你所的公交线路的总站点 inttotalPoiNum=arg0.getNumPois(); for(inti=0;i<totalPoiNum;i++){ mkPoiInfo=arg0.getPoi(i); if(mkPoiInfo.ePoiType==2){ break; } } mkSearch.busLineSearch("开封",mkPoiInfo.uid); }
2.获取公交线路详情:
/* *得到公交线路图的详情 * *@see *com.baidu.mapapi.MKSearchListener#onGetBusDetailResult(com.baidu. *mapapi.MKBusLineResult,int) */ @Override publicvoidonGetBusDetailResult(MKBusLineResultarg0,intarg1){ //TODOAuto-generatedmethodstub if(arg0==null||arg1!=0){ Toast.makeText(MainActivity.this,"未找到结果",1); return; } RouteOverlayrouteOverlay=newRouteOverlay(MainActivity.this, mapView); routeOverlay.setData(arg0.getBusRoute());//获得公交线路 mapView.getOverlays().clear();//清楚公交站点的标识 mapView.getOverlays().add(routeOverlay); mapView.invalidate(); //采用动画形式描述公交站点 mapView.getController().animateTo(arg0.getBusRoute().getStart()); }
查询时,只需提供城市名和线路
mkSearch.poiSearchInCity("开封","3");
完整代码:
packagecom.arlen.android.baidumap08; importandroid.os.Bundle; importandroid.view.Menu; importandroid.widget.Toast; importcom.baidu.mapapi.BMapManager; importcom.baidu.mapapi.MKAddrInfo; importcom.baidu.mapapi.MKBusLineResult; importcom.baidu.mapapi.MKDrivingRouteResult; importcom.baidu.mapapi.MKGeneralListener; importcom.baidu.mapapi.MKPoiInfo; importcom.baidu.mapapi.MKPoiResult; importcom.baidu.mapapi.MKSearch; importcom.baidu.mapapi.MKSearchListener; importcom.baidu.mapapi.MKSuggestionResult; importcom.baidu.mapapi.MKTransitRouteResult; importcom.baidu.mapapi.MKWalkingRouteResult; importcom.baidu.mapapi.MapActivity; importcom.baidu.mapapi.MapView; importcom.baidu.mapapi.RouteOverlay; publicclassMainActivityextendsMapActivity{ privateBMapManagerbMapManager; privateMapViewmapView; privateStringkey="43D220AAB0DEC976D2EABC83CFC9EEE52BCCCA7A"; privateMKSearchmkSearch; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bMapManager=newBMapManager(MainActivity.this); bMapManager.init(key,newMKGeneralListener(){ @Override publicvoidonGetPermissionState(intarg0){ //TODOAuto-generatedmethodstub } @Override publicvoidonGetNetworkState(intarg0){ //TODOAuto-generatedmethodstub } }); initMapActivity(bMapManager); mapView=(MapView)findViewById(R.id.bmapView); mkSearch=newMKSearch(); mkSearch.init(bMapManager,newMySearchListener()); mkSearch.poiSearchInCity("开封","3"); } privateclassMySearchListenerimplementsMKSearchListener{ @Override publicvoidonGetAddrResult(MKAddrInfoarg0,intarg1){ //TODOAuto-generatedmethodstub } /* *得到公交线路图的详情 * *@see *com.baidu.mapapi.MKSearchListener#onGetBusDetailResult(com.baidu. *mapapi.MKBusLineResult,int) */ @Override publicvoidonGetBusDetailResult(MKBusLineResultarg0,intarg1){ //TODOAuto-generatedmethodstub if(arg0==null||arg1!=0){ Toast.makeText(MainActivity.this,"未找到结果",1); return; } RouteOverlayrouteOverlay=newRouteOverlay(MainActivity.this, mapView); routeOverlay.setData(arg0.getBusRoute());//获得公交线路 mapView.getOverlays().clear();//清楚公交站点的标识 mapView.getOverlays().add(routeOverlay); mapView.invalidate(); //采用动画形式描述公交站点 mapView.getController().animateTo(arg0.getBusRoute().getStart()); } @Override publicvoidonGetDrivingRouteResult(MKDrivingRouteResultarg0,intarg1){ //TODOAuto-generatedmethodstub } @Override publicvoidonGetPoiDetailSearchResult(intarg0,intarg1){ //TODOAuto-generatedmethodstub } /* *获得公交线路图的Uid,并且根据系Uid发起公交线路详情的检索 * *@see *com.baidu.mapapi.MKSearchListener#onGetPoiResult(com.baidu.mapapi *.MKPoiResult,int,int) */ @Override publicvoidonGetPoiResult(MKPoiResultarg0,intarg1,intarg2){ //TODOAuto-generatedmethodstub if(arg0==null||arg2!=0){ Toast.makeText(MainActivity.this,"未找到结果",1); return; } //定义一个公交线路描述类 MKPoiInfomkPoiInfo=null; //获得本次就爱你所的公交线路的总站点 inttotalPoiNum=arg0.getNumPois(); for(inti=0;i<totalPoiNum;i++){ mkPoiInfo=arg0.getPoi(i); if(mkPoiInfo.ePoiType==2){ break; } } mkSearch.busLineSearch("开封",mkPoiInfo.uid); } @Override publicvoidonGetRGCShareUrlResult(Stringarg0,intarg1){ //TODOAuto-generatedmethodstub } @Override publicvoidonGetSuggestionResult(MKSuggestionResultarg0,intarg1){ //TODOAuto-generatedmethodstub } @Override publicvoidonGetTransitRouteResult(MKTransitRouteResultarg0,intarg1){ //TODOAuto-generatedmethodstub } @Override publicvoidonGetWalkingRouteResult(MKWalkingRouteResultarg0,intarg1){ //TODOAuto-generatedmethodstub } } @Override protectedvoidonDestroy(){ //TODOAuto-generatedmethodstub super.onDestroy(); if(bMapManager!=null){ bMapManager.destroy(); bMapManager=null; } } @Override protectedvoidonResume(){ //TODOAuto-generatedmethodstub super.onResume(); if(bMapManager!=null){ bMapManager.start(); } } @Override protectedvoidonPause(){ //TODOAuto-generatedmethodstub super.onPause(); if(bMapManager!=null){ bMapManager.stop(); } } @Override publicbooleanonCreateOptionsMenu(Menumenu){ //Inflatethemenu;thisaddsitemstotheactionbarifitispresent. getMenuInflater().inflate(R.menu.main,menu); returntrue; } @Override protectedbooleanisRouteDisplayed(){ //TODOAuto-generatedmethodstub returnfalse; } }
二、多条线路显示
在同一个地图上显示多条导航线路,也只需要分两步完成,
1.定义起始点个终点
start=newMKPlanNode(); start.pt=newGeoPoint((int)(39.915*1E6),(int)(116.404*1E6)); end=newMKPlanNode(); end.pt=newGeoPoint(40057031,116307852); mkSearch.transitSearch("北京",start,end);
2.将所有的线路详情循环显示在地图上
@Override publicvoidonGetTransitRouteResult(MKTransitRouteResultarg0,intarg1){ //TODOAuto-generatedmethodstub if(arg0==null){ return; } intplanNum=arg0.getNumPlan();//获取所有的驾车路线 for(inti=0;i<planNum;i++){ TransitOverlayoverlay=newTransitOverlay(MainActivity.this, mapView); overlay.setData(arg0.getPlan(i)); mapView.getOverlays().add(overlay); } mapView.invalidate(); mapView.getController().animateTo(arg0.getStart().pt); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。