百度地图开发之公交信息检索

上次我们一块研究下了最基本的POI检索,今天我们来看下,个人觉得比较有用的公交线路检索。

下面我们看下这个类中的方法

程序包 com.baidu.mapapi.search.busline

BusLineResult
公共交通信息查询结果
BusLineResult.BusStation
公交站点信息
BusLineResult.BusStep
公交路线分段信息
BusLineSearch
城市公交信息(包含地铁信息)查询 该接口用于查询整条公交线路信息 公交换乘路线查询请参看  RoutePlanSearch
BusLineSearchOption
城市公交信息查询参数

>>usLineSearch

void destroy()
释放检索对象资源
static BusLineSearch newInstance()
获取一个新的检索实例
boolean searchBusLine(BusLineSearchOption option)
公交检索入口
void setOnGetBusLineSearchResultListener(OnGetBusLineSearchResultListener listener)
设置公交详情检索结果监听者
>> BusLineSearchOption  参数如下

BusLineSearchOption city(java.lang.String city)
设置查询城市
BusLineSearchOption uid(java.lang.String uid)
设置公交路线uid.

结合POI搜索完成今天的例子

xml文件依旧仅仅包含一个listview

[html]  view plain copy print ?
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".IndexActivity" >  
  6.       
  7.     <ListView  
  8.         android:id="@+id/mylistView"  
  9.         android:layout_width="wrap_content"  
  10.         android:layout_height="wrap_content" />  
  11.   
  12. </RelativeLayout>  



[java]  view plain copy print ?
  1. package com.flyou.hellomap;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import android.app.Activity;  
  7. import android.os.Bundle;  
  8. import android.view.KeyEvent;  
  9. import android.widget.ArrayAdapter;  
  10. import android.widget.ListView;  
  11. import android.widget.Toast;  
  12.   
  13. import com.baidu.mapapi.SDKInitializer;  
  14. import com.baidu.mapapi.search.busline.BusLineResult;  
  15. import com.baidu.mapapi.search.busline.BusLineResult.BusStation;  
  16. import com.baidu.mapapi.search.busline.BusLineSearch;  
  17. import com.baidu.mapapi.search.busline.BusLineSearchOption;  
  18. import com.baidu.mapapi.search.busline.OnGetBusLineSearchResultListener;  
  19. import com.baidu.mapapi.search.core.CityInfo;  
  20. import com.baidu.mapapi.search.core.PoiInfo;  
  21. import com.baidu.mapapi.search.core.SearchResult;  
  22. import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;  
  23. import com.baidu.mapapi.search.poi.PoiCitySearchOption;  
  24. import com.baidu.mapapi.search.poi.PoiDetailResult;  
  25. import com.baidu.mapapi.search.poi.PoiResult;  
  26. import com.baidu.mapapi.search.poi.PoiSearch;  
  27.   
  28. public class BusMapActivity extends Activity {  
  29.   private int totalpages = 0;  
  30.   private ListView listView = null;  
  31.   private PoiSearch poiSearch;  
  32.   private int currentPage = 0;  
  33.   ArrayAdapter<String> adapter = null;  
  34.   protected String busLineId;  
  35.  private  BusLineSearch buslineSearch ;  
  36.   @Override  
  37.   protected void onCreate(Bundle savedInstanceState) {  
  38.     super.onCreate(savedInstanceState);  
  39.     // 在使用SDK各组件之前初始化context信息,传入ApplicationContext  
  40.     // 注意该方法要再setContentView方法之前实现  
  41.     SDKInitializer.initialize(getApplicationContext());  
  42.   
  43.     setContentView(R.layout.activity_index);  
  44.   
  45.     listView = (ListView) findViewById(R.id.mylistView);  
  46.   
  47.     // 第一步,创建POI检索实例  
  48.     poiSearch = PoiSearch.newInstance();  
  49.     // 第三步,设置POI检索监听者;  
  50.     poiSearch.setOnGetPoiSearchResultListener(poiListener);  
  51.       
  52.     // 第一步,创建Busline检索实例  
  53.     buslineSearch = BusLineSearch.newInstance();  
  54.     // 第三步,设置<span style="font-family: Arial, Helvetica, sans-serif;">Busline</span><span style="font-family: Arial, Helvetica, sans-serif;">检索监听者;</span>  
  55.     buslineSearch.setOnGetBusLineSearchResultListener(busLineListener);  
  56.       
  57.   
  58.   }  
  59.  <span style="color:#ff0000;"> OnGetBusLineSearchResultListener busLineListener =new OnGetBusLineSearchResultListener() {  
  60.       
  61.     @Override  
  62.     public void onGetBusLineResult(BusLineResult result) {  
  63.       String title;  
  64.       List<BusStation> stations = result.getStations();  
  65.       List<String> datas=new ArrayList<String>();  
  66.       for (BusStation busStation : stations) {  
  67.         title = busStation.getTitle();  
  68.         datas.add(title);  
  69.       }</span>  
  70.         
  71.       listView.setAdapter(new ArrayAdapter<String>(BusMapActivity.this, android.R.layout.simple_list_item_1, datas));  
  72.     }  
  73.   };  
  74.   // 第二步,创建POI检索监听者;  
  75.   OnGetPoiSearchResultListener poiListener = new OnGetPoiSearchResultListener() {  
  76.   
  77.     public void onGetPoiResult(PoiResult result) {  
  78.       // 获取POI检索结果  
  79.       if (result == null || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) {  
  80.         Toast.makeText(BusMapActivity.this"未找到结果", Toast.LENGTH_LONG).show();  
  81.         return;  
  82.       }  
  83.       if (result.error == SearchResult.ERRORNO.NO_ERROR) {  
  84.         List<PoiInfo> allPoi = result.getAllPoi();  
  85.         totalpages = result.getTotalPageNum();  
  86.   
  87.         String[] datas = new String[10];  
  88.         //遍历所有POI,找到类型为公交线路的POI    
  89.        <span style="color:#ff0000;"for (PoiInfo poi : result.getAllPoi()) {    
  90.             if (poi.type == PoiInfo.POITYPE.BUS_LINE ||poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {    
  91.                 //说明该条POI为公交信息,获取该条POI的UID    
  92.                 busLineId = poi.uid;    
  93.                 break;    
  94.             }    
  95.         }  
  96.           
  97.         //如下代码为发起检索代码,定义监听者和设置监听器的方法与POI中的类似    
  98.         buslineSearch  .searchBusLine((new BusLineSearchOption()    
  99.              .city("开封")    
  100.              .uid(busLineId)));</span>  
  101.       }  
  102.       if (result.error == SearchResult.ERRORNO.AMBIGUOUS_KEYWORD) {  
  103.   
  104.         // 当输入关键字在本市没有找到,但在其他城市找到时,返回包含该关键字信息的城市列表  
  105.         String strInfo = "在";  
  106.         for (CityInfo cityInfo : result.getSuggestCityList()) {  
  107.           strInfo += cityInfo.city;  
  108.           strInfo += ",";  
  109.         }  
  110.         strInfo += "找到结果";  
  111.         Toast.makeText(BusMapActivity.this, strInfo, Toast.LENGTH_LONG).show();  
  112.       }  
  113.     }  
  114.   
  115.     public void onGetPoiDetailResult(PoiDetailResult result) {  
  116.       // 获取Place详情页检索结果  
  117.   
  118.     }  
  119.   };  
  120.   
  121.   @Override  
  122.   protected void onDestroy() {  
  123.     super.onDestroy();  
  124.     // 在activity执行onDestroy时执行mMapView.onDestroy(),实现地图生命周期管理  
  125.     poiSearch.destroy();  
  126.   }  
  127.   
  128.   @Override  
  129.   protected void onResume() {  
  130.     super.onResume();  
  131.     // 在activity执行onResume时执行mMapView. onResume (),实现地图生命周期管理  
  132.   
  133.   }  
  134.   
  135.   @Override  
  136.   protected void onPause() {  
  137.     super.onPause();  
  138.     // 在activity执行onPause时执行mMapView. onPause (),实现地图生命周期管理  
  139.   
  140.   }  
  141.   
  142.   @Override  
  143.   public boolean onKeyDown(int keyCode, KeyEvent event) {  
  144.   
  145.     switch (keyCode) {  
  146.       case KeyEvent.KEYCODE_MENU:  
  147.         /** 
  148.          * 范围检索 // 这是范围 LatLngBounds.Builder b = new LatLngBounds.Builder(); 
  149.          * b.include(new LatLng(39.976446, 116.320331)); b.include(new 
  150.          * LatLng(39.900766, 116.32838)); b.include(new LatLng(39.910065, 
  151.          * 116.491081)); b.include(new LatLng(39.976004, 116.475558)); 
  152.          * LatLngBounds build = b.build(); // 第四步,发起检索请求; 
  153.          * poiSearch.searchInBound(new 
  154.          * PoiBoundSearchOption().bound(build).keyword 
  155.          * ("美食").pageNum(currentPage)); 
  156.          */  
  157.   
  158.         
  159.       <span style="color:#ff0000;">    poiSearch.searchInCity((new  
  160.          PoiCitySearchOption()).city("开封").keyword(  
  161.           "33").pageNum(currentPage));</span>  
  162.           
  163.          
  164.   
  165.         /** 
  166.          * poiSearch.searchNearby(new PoiNearbySearchOption() .keyword("大学") 
  167.          * .location(new LatLng(34.82336,114.31496)) .radius(3000) 
  168.          * );//可以为定位的坐标也可自己制定 
  169.          */  
  170.         currentPage++;  
  171.         if (currentPage == totalpages) {  
  172.           currentPage = 0;  
  173.         }  
  174.         break;  
  175.   
  176.     }  
  177.     return super.onKeyDown(keyCode, event);  
  178.   }  
  179. }  

运行结果为开封市33路的线路

百度地图开发之公交信息检索_第1张图片


百度地图开发之公交信息检索_第2张图片


下图为百度搜索的结果


百度地图开发之公交信息检索_第3张图片

你可能感兴趣的:(android,交通,百度地图,路线)