1. 程式人生 > >百度地圖3.2教程(2)公交查詢

百度地圖3.2教程(2)公交查詢

track error alt 3.1 內容 說了 ase 放大 gets

上一篇地址

百度地圖3.1教程—檢索功能演示

還記得兩天前 我在找公交接口,非常不幸。接口有些查不到,幾年的前的數據,哎 。算了唄,突然想起來了百度地圖有這個功能,結果去看了API,尼瑪這API 改的我都不認識 源代碼在最小面

說好的MK開頭的數據呢 去哪了,僅僅有從新看了。想從站點找點數據看看結果,找不到了,都是曾經API,好吧 自己寫一篇 給大家補全吧

至於Demo配置我就不說了 。請參考上一篇文章.......


由於僅僅是做研究用的。所以UI做的不是非常美觀 僅僅是把數據放到上面去了。 UI例如以下

技術分享

這個僅僅是教學教程所以 UI做的比較醜,只是這個代碼你能夠拷貝到你的APP裏做成查詢公交的功能,待完好。。。

。。

。。。。。。

一個button點擊事件。聯網請求數據,返回在Textview和listview顯示


-----------第一步。發起POI檢索。獲取對應線路的UID;------------

先用poi檢索查詢 全部公交信息返回,這裏是上一節就講過的內容 我就不敘述了。

<pre name="code" class="java">	private void initMap() {
		poiSearch = PoiSearch.newInstance();
		poiSearch.setOnGetPoiSearchResultListener(onGetPoiSearchResultListener );
		//當公交信息出現以後,會出發這個監聽器,這部分會在後面解說
		mBusLineSearch=BusLineSearch.newInstance();
		mBusLineSearch.setOnGetBusLineSearchResultListener(onGetBusLineSearchResultListener);
	}



 -----第二步,通過button的點擊事件我們出發檢索事件------

	private void iniview() {
		button1 = (Button) findViewById(R.id.button1);
		search_result = (TextView) findViewById(R.id.result);
		bus_station = (ListView) findViewById(R.id.bus_station);
		button1.setOnClickListener(this);
	}


/*Button的點擊事件處理,進行聯網檢索任務*/
	@Override
	public void onClick(View view) {
		switch (view.getId()) {
		case R.id.button1:
			poiSearch.searchInCity((new PoiCitySearchOption())  
				    .city("深圳")  
				    .keyword("46")  
				    );
			
			break;

		default:
			break;
		}

	}

----------------第三步。通過聯網 百度會返回一些公交數據。到回調接口 --------------------

//	--------------------------------POI檢索-----------------------
	OnGetPoiSearchResultListener onGetPoiSearchResultListener  = new OnGetPoiSearchResultListener() {

		
		@Override
		public void onGetPoiResult(PoiResult result) {
			  if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {  
			        return;  
			    }  
			    //遍歷全部POI。找到類型為公交線路的POI  
			    for (PoiInfo poi : result.getAllPoi()) {  
			        if (poi.type == PoiInfo.POITYPE.BUS_LINE ||poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {  
			            busLineId = poi.uid;
			            mBusLineSearch.searchBusLine((new BusLineSearchOption()  
					    .city("深圳")  
					    .uid(busLineId)));
			            break;  
			        } 
			    }  
			    
		 
		}
			//後面是具體信息
		@Override
		public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
			
		}
	};
//	--------------------------------POI檢索-----------------------

------------------第四步 觸發onGetBusLineSearchResultListener接口 從接口裏的result裏去取出我們要的數據

	//----------------------------bus檢索-------------------------------------
	OnGetBusLineSearchResultListener onGetBusLineSearchResultListener=new OnGetBusLineSearchResultListener() {
		
		@Override
		public void onGetBusLineResult(BusLineResult result) {
			Date startTime = result.getStartTime();
			Date endTime = result.getEndTime();
			String start = Commutils.dataToString(startTime);
			String end = Commutils.dataToString(endTime);
			String busLineName = result.getBusLineName();
			search_result.setText(start+"--"+end+"\n"+busLineName);
			List<BusStation> stations = result.getStations();
			List<String>list=new ArrayList<String>(); 
			for (int i = 0; i < stations.size(); i++) {
				String title = stations.get(i).getTitle();
				list.add(title);
			}
			ArrayAdapter<String>adapter=new ArrayAdapter<String>(BusLineSearchDemo.this, android.R.layout.simple_list_item_1,list); 
			bus_station.setAdapter(adapter);
		}
	};
	//----------------------------bus檢索-------------------------------------
我就去了 最早時間 和最晚時間 還有 經過的站 其它的你們能夠自行 擴展一下


	//----------------------------bus檢索-------------------------------------
	OnGetBusLineSearchResultListener onGetBusLineSearchResultListener=new OnGetBusLineSearchResultListener() {
		
		@Override
		public void onGetBusLineResult(BusLineResult result) {
			Date startTime = result.getStartTime();
			Date endTime = result.getEndTime();
			String start = Commutils.dataToString(startTime);
			String end = Commutils.dataToString(endTime);
			String busLineName = result.getBusLineName();
			search_result.setText(start+"--"+end+"\n"+busLineName);
			List<BusStation> stations = result.getStations();
			List<String>list=new ArrayList<String>(); 
			for (int i = 0; i < stations.size(); i++) {
				String title = stations.get(i).getTitle();
				list.add(title);
			}
			ArrayAdapter<String>adapter=new ArrayAdapter<String>(BusLineSearchDemo.this, android.R.layout.simple_list_item_1,list); 
			bus_station.setAdapter(adapter);
		}
	};
	//----------------------------bus檢索-------------------------------------

java 所有代碼

package com.example.maptest;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.search.busline.BusLineResult;
import com.baidu.mapapi.search.busline.BusLineResult.BusStation;
import com.baidu.mapapi.search.busline.BusLineSearch;
import com.baidu.mapapi.search.busline.BusLineSearchOption;
import com.baidu.mapapi.search.busline.OnGetBusLineSearchResultListener;
import com.baidu.mapapi.search.core.PoiInfo;
import com.baidu.mapapi.search.core.SearchResult;
import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
import com.baidu.mapapi.search.poi.PoiCitySearchOption;
import com.baidu.mapapi.search.poi.PoiDetailResult;
import com.baidu.mapapi.search.poi.PoiResult;
import com.baidu.mapapi.search.poi.PoiSearch;

/**
 * 此demo用來展示怎樣進行公交線路詳情檢索,並使用RouteOverlay在地圖上繪制 同一時候展示怎樣瀏覽路線節點並彈出泡泡
 */
public class BusLineSearchDemo extends Activity implements OnClickListener {
	private Button button1;
	private PoiSearch poiSearch;
	private BusLineSearch mBusLineSearch;
	private PoiCitySearchOption poiCitySearchOption;
	private TextView search_result;
	private ListView bus_station;
	private String busLineId;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		requestWindowFeature(Window.FEATURE_NO_TITLE);
		// 註意該方法要再setContentView方法之前實現
		SDKInitializer.initialize(getApplicationContext());
		setContentView(R.layout.activity_busline);
		initMap();
		iniview();
	}

	private void initMap() {
		poiSearch = PoiSearch.newInstance();
		poiSearch.setOnGetPoiSearchResultListener(onGetPoiSearchResultListener );
		//當公交信息出現以後。會出發這個監聽器,這部分會在後面解說
		mBusLineSearch=BusLineSearch.newInstance();
		mBusLineSearch.setOnGetBusLineSearchResultListener(onGetBusLineSearchResultListener);
	}

	private void iniview() {
		button1 = (Button) findViewById(R.id.button1);
		search_result = (TextView) findViewById(R.id.result);
		bus_station = (ListView) findViewById(R.id.bus_station);
		button1.setOnClickListener(this);
	}
/*Button的點擊事件處理,進行聯網檢索任務*/
	@Override
	public void onClick(View view) {
		switch (view.getId()) {
		case R.id.button1:
			poiSearch.searchInCity((new PoiCitySearchOption())  
				    .city("深圳")  
				    .keyword("46")  
				    );
			
			break;

		default:
			break;
		}

	}
//	--------------------------------POI檢索-----------------------
	OnGetPoiSearchResultListener onGetPoiSearchResultListener  = new OnGetPoiSearchResultListener() {

		
		@Override
		public void onGetPoiResult(PoiResult result) {
			  if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) {  
			        return;  
			    }  
			    //遍歷全部POI,找到類型為公交線路的POI  
			    for (PoiInfo poi : result.getAllPoi()) {  
			        if (poi.type == PoiInfo.POITYPE.BUS_LINE ||poi.type == PoiInfo.POITYPE.SUBWAY_LINE) {  
			            busLineId = poi.uid;
			            mBusLineSearch.searchBusLine((new BusLineSearchOption()  
					    .city("深圳")  
					    .uid(busLineId)));
			            break;  
			        } 
			    }  
			    
		 
		}
			//後面是具體信息
		@Override
		public void onGetPoiDetailResult(PoiDetailResult poiDetailResult) {
			
		}
	};
//	--------------------------------POI檢索-----------------------
	//----------------------------bus檢索-------------------------------------
	OnGetBusLineSearchResultListener onGetBusLineSearchResultListener=new OnGetBusLineSearchResultListener() {
		
		@Override
		public void onGetBusLineResult(BusLineResult result) {
			Date startTime = result.getStartTime();
			Date endTime = result.getEndTime();
			String start = Commutils.dataToString(startTime);
			String end = Commutils.dataToString(endTime);
			String busLineName = result.getBusLineName();
			search_result.setText(start+"--"+end+"\n"+busLineName);
			List<BusStation> stations = result.getStations();
			List<String>list=new ArrayList<String>(); 
			for (int i = 0; i < stations.size(); i++) {
				String title = stations.get(i).getTitle();
				list.add(title);
			}
			ArrayAdapter<String>adapter=new ArrayAdapter<String>(BusLineSearchDemo.this, android.R.layout.simple_list_item_1,list); 
			bus_station.setAdapter(adapter);
		}
	};
	//----------------------------bus檢索-------------------------------------
/* 釋放資源*/
	@Override
	protected void onDestroy() {
		super.onDestroy();
		poiSearch.destroy();
	}

}
------------------------------------------------------------------end-----------------------------------------------

源代碼裏面其它類 ,你就別看了。由於還在研究 以下那個功能留下來的...........................

點擊下載源代碼

百度地圖3.2教程(2)公交查詢