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);
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。