百度地圖SDK for Android【Demo興趣點搜索】

        百度地圖SDK爲開發者提供了便捷的檢索服務。今天我將爲大家介紹Poi檢索相關的內容。

        首先,我們要構建一個最基本的地圖應用,具體介紹請參考:百度地圖SDK for Android【Demo地圖展示】

        在這個工程的基礎之上我們做一定的修改。

        第一步,修改佈局文件,添加關鍵字輸入框和用於執行搜索操作的按鈕。代碼如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <!-- 放入百度地圖的mapview -->
    <com.baidu.mapapi.map.MapView android:id="@+id/bmapsView"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:clickable="true"/>

    <!-- 用戶輸入關鍵字的文本框 -->
    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/button1"
        android:hint="請輸入搜索關鍵字"
        android:ems="50" >
        <requestFocus />
    </EditText>

    <!-- 執行Poi搜索的按鈕 -->
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="《搜索Poi》" />

</RelativeLayout>

        第二步,在主類中定義EditText和Button對象,並初始化。代碼如下:

		// 初始化關鍵詞輸入框和按鈕控件
		editText = (EditText) findViewById(R.id.editText1);
		button = (Button) findViewById(R.id.button1);

        第三步,定義並初始化搜索監聽對象(這裏我們只對poi搜索做了監聽,如果開發者在使用其他檢索時,只需修改對應的監聽方法即可)。代碼如下:

	MKSearchListener mkSearchListener = new MKSearchListener() {
		
		@Override
		public void onGetWalkingRouteResult(MKWalkingRouteResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetTransitRouteResult(MKTransitRouteResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetSuggestionResult(MKSuggestionResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetPoiResult(MKPoiResult arg0, int arg1, int arg2) {
			// TODO Auto-generated method stub
			// 首先判斷是否搜索到結果
			if(arg2 != 0 || arg0 == null)
			{
				Toast.makeText(MainActivity.this, "沒有找到結果!", Toast.LENGTH_SHORT).show();
				return;
			}
			// 將結果繪製到地圖上
			if(arg0.getCurrentNumPois() > 0)
			{
				PoiOverlay poiOverlay = new PoiOverlay(MainActivity.this, mapView);
                poiOverlay.setData(arg0.getAllPoi());
                mapView.getOverlays().clear();
                mapView.getOverlays().add(poiOverlay);
                mapView.refresh();
                //當arg1爲2(公交線路)或4(地鐵線路)時, poi座標爲空
                for( MKPoiInfo info : arg0.getAllPoi() )
                {
                	if ( info.pt != null ){
                		mapView.getController().animateTo(info.pt);
                		break;
                	}
                }
			}
		}
		
		@Override
		public void onGetPoiDetailSearchResult(int arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetDrivingRouteResult(MKDrivingRouteResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetBusDetailResult(MKBusLineResult arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
		
		@Override
		public void onGetAddrResult(MKAddrInfo arg0, int arg1) {
			// TODO Auto-generated method stub
			
		}
	};

        第四步,定義Poi檢索對象並初始化。代碼如下:

		// 初始化Poi搜索對象
		mkSearch = new MKSearch();
		mkSearch.init(bMapManager, mkSearchListener);

        第五步,設置button的點擊事件,實現Poi搜索。代碼如下:

		button.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				String key = editText.getText().toString();
				// 如果關鍵字爲空則不進入搜索
				if(key.equals(""))
				{
					Toast.makeText(MainActivity.this, "請輸入搜索關鍵詞!", Toast.LENGTH_SHORT).show();
				}
				else 
				{
					// 這裏Poi搜索以城市內Poi檢索爲例,開發者可根據自己的實際需求,靈活使用
					mkSearch.poiSearchInCity("北京", key);
				}
			}
		});

        第六步,完成!結果如下圖所示:

 

        注意:本示例只給出了最基本的核心代碼,需要查看全部代碼的開發者請下載原工程文件

        此外,這個簡單的例子旨在說明Poi的最基本使用方法及執行邏輯,百度地圖SDK爲開發者提供了豐富的檢索服務,您可以實現城市檢索、周邊檢索、範圍檢索等等。

        更多精彩請持續關注本博客及百度地圖SDK官方網站


更多詳細信息請登錄百度地圖API官方網站:http://developer.baidu.com/map/
百度地圖API論壇:http://bbs.lbsyun.baidu.com/


 

發佈了36 篇原創文章 · 獲贊 55 · 訪問量 38萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章