本篇文章可以实现百度公交线路搜索,可以选择多条线路,具体实现代码如下:
一、公交线路详情检索
获取公交线路的详情主要分来两步,1.获取公交线路的UID,2.通过UID获取公交线路详情。
1.获取公交线路的UID:
/* * 获得公交线路图的UID,并且根据系UID发起公交线路详情的检索 * * @see * com.baIDu.mapAPI.MKSearchListener#onGetPoiResult(com.baIDu.mapAPI * .MKPoiResult,int,int) */ @OverrIDe public voID onGetPoiResult(MKPoiResult arg0,int arg1,int arg2) { // Todo auto-generated method stub if (arg0 == null || arg2 != 0) { Toast.makeText(MainActivity.this,"未找到结果",1); return; } // 定义一个公交线路描述类 MKPoiInfo mkPoiInfo = null; // 获得本次就爱你所的公交线路的总站点 int totalPoiNum = arg0.getNumPois(); for (int i = 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 public voID onGetBusDetailResult(MKBuslineResult arg0,int arg1) { // Todo auto-generated method stub if (arg0 == null || arg1 != 0) { Toast.makeText(MainActivity.this,1); return; } RouteOverlay routeOverlay = new RouteOverlay(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");
完整代码:
package com.arlen.androID.baIDumap08;import androID.os.Bundle;import androID.vIEw.Menu;import androID.Widget.Toast;import com.baIDu.mapAPI.BMapManager;import com.baIDu.mapAPI.MKAddrInfo;import com.baIDu.mapAPI.MKBuslineResult;import com.baIDu.mapAPI.MKDrivingRouteResult;import com.baIDu.mapAPI.MKGeneralListener;import com.baIDu.mapAPI.MKPoiInfo;import com.baIDu.mapAPI.MKPoiResult;import com.baIDu.mapAPI.MKSearch;import com.baIDu.mapAPI.MKSearchListener;import com.baIDu.mapAPI.MKSuggestionResult;import com.baIDu.mapAPI.MKTransitRouteResult;import com.baIDu.mapAPI.MKWalkingRouteResult;import com.baIDu.mapAPI.MapActivity;import com.baIDu.mapAPI.MapVIEw;import com.baIDu.mapAPI.RouteOverlay;public class MainActivity extends MapActivity { private BMapManager bMapManager; private MapVIEw mapVIEw; private String key = "43D220AAB0DEC976D2EABC83CFC9EEE52BCCCA7A"; private MKSearch mkSearch; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); bMapManager = new BMapManager(MainActivity.this); bMapManager.init(key,new MKGeneralListener() { @OverrIDe public voID onGetPermissionState(int arg0) { // Todo auto-generated method stub } @OverrIDe public voID onGetNetworkState(int arg0) { // Todo auto-generated method stub } }); initMapActivity(bMapManager); mapVIEw = (MapVIEw) findVIEwByID(R.ID.bmapVIEw); mkSearch = new MKSearch(); mkSearch.init(bMapManager,new MySearchListener()); mkSearch.poiSearchInCity("开封","3"); } private class MySearchListener implements MKSearchListener { @OverrIDe public voID onGetAddrResult(MKAddrInfo arg0,int arg1) { // Todo auto-generated method stub } /* * 得到公交线路图的详情 * * @see * com.baIDu.mapAPI.MKSearchListener#onGetBusDetailResult(com.baIDu. * mapAPI.MKBuslineResult,mapVIEw); routeOverlay.setData(arg0.getBusRoute());// 获得公交线路 mapVIEw.getoverlays().clear();// 清楚公交站点的标识 mapVIEw.getoverlays().add(routeOverlay); mapVIEw.invalIDate(); // 采用动画形式描述公交站点 mapVIEw.getController().animateto(arg0.getBusRoute().getStart()); } @OverrIDe public voID onGetDrivingRouteResult(MKDrivingRouteResult arg0,int arg1) { // Todo auto-generated method stub } @OverrIDe public voID onGetPoIDetailSearchResult(int arg0,int arg1) { // Todo auto-generated method stub } /* * 获得公交线路图的UID,并且根据系UID发起公交线路详情的检索 * * @see * com.baIDu.mapAPI.MKSearchListener#onGetPoiResult(com.baIDu.mapAPI * .MKPoiResult,mkPoiInfo.uID); } @OverrIDe public voID onGetRGCShareUrlResult(String arg0,int arg1) { // Todo auto-generated method stub } @OverrIDe public voID onGetSuggestionResult(MKSuggestionResult arg0,int arg1) { // Todo auto-generated method stub } @OverrIDe public voID onGetTransitRouteResult(MKTransitRouteResult arg0,int arg1) { // Todo auto-generated method stub } @OverrIDe public voID onGetWalkingRouteResult(MKWalkingRouteResult arg0,int arg1) { // Todo auto-generated method stub } } @OverrIDe protected voID onDestroy() { // Todo auto-generated method stub super.onDestroy(); if (bMapManager != null) { bMapManager.destroy(); bMapManager = null; } } @OverrIDe protected voID onResume() { // Todo auto-generated method stub super.onResume(); if (bMapManager != null) { bMapManager.start(); } } @OverrIDe protected voID onPause() { // Todo auto-generated method stub super.onPause(); if (bMapManager != null) { bMapManager.stop(); } } @OverrIDe public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main,menu); return true; } @OverrIDe protected boolean isRoutedisplayed() { // Todo auto-generated method stub return false; }}
二、多条线路显示
在同一个地图上显示多条导航线路,也只需要分两步完成,
1.定义起始点个终点
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);
2.将所有的线路详情循环显示在地图上
@OverrIDe public voID onGetTransitRouteResult(MKTransitRouteResult arg0,int arg1) { // Todo auto-generated method stub if (arg0 == null) { return; } int planNum = arg0.getNumPlan();// 获取所有的驾车路线 for (int i = 0; i < planNum; i++) { TransitOverlay overlay = new TransitOverlay(MainActivity.this,mapVIEw); overlay.setData(arg0.getPlan(i)); mapVIEw.getoverlays().add(overlay); } mapVIEw.invalIDate(); mapVIEw.getController().animateto(arg0.getStart().pt); }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。
总结以上是内存溢出为你收集整理的android百度地图之公交线路详情搜索全部内容,希望文章能够帮你解决android百度地图之公交线路详情搜索所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)