import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.MKMapViewListener;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapPoi;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.search.MKAddrInfo;
import com.baidu.mapapi.search.MKBusLineResult;
import com.baidu.mapapi.search.MKDrivingRouteResult;
import com.baidu.mapapi.search.MKPoiInfo;
import com.baidu.mapapi.search.MKPoiResult;
import com.baidu.mapapi.search.MKSearch;
import com.baidu.mapapi.search.MKSearchListener;
import com.baidu.mapapi.search.MKSuggestionResult;
import com.baidu.mapapi.search.MKTransitRouteResult;
import com.baidu.mapapi.search.MKWalkingRouteResult;
public class PoiSearchDemo extends Activity {
static MapView mMapView = null;
private MapController mMapController = null;
public MKMapViewListener mMapListener = null;
MKSearch mSearch = null; // 搜索模塊,也可去掉地圖模塊獨立使用
public static String mStrSuggestions[] = {};
Button mBtnSearch = null; // 搜索按鈕
Button mBtnDetailSearch = null; // 詳細搜搜按鈕
Button mSuggestionSearch = null; //suggestion搜索
Button nextData = null;
public int load_Index;
ListView mSuggestionList = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_poisearch);
DemoApplication app = (DemoApplication)this.getApplication();
if (app.mBMapManager == null) {
app.mBMapManager = new BMapManager(this);
app.mBMapManager.init(DemoApplication.strKey,new DemoApplication.MyGeneralListener());
}
mMapView = (MapView)findViewById(R.id.bmapView);
mMapController = mMapView.getController();
initMapView();
mMapListener = new MKMapViewListener() {
@Override
public void onMapMoveFinish() {
}
@Override
public void onClickMapPoi(MapPoi mapPoiInfo) {
String title = "";
if (mapPoiInfo != null){
title = mapPoiInfo.strText;
Toast.makeText(PoiSearchDemo.this,title,Toast.LENGTH_SHORT).show();
}
}
};
mMapView.regMapViewListener(DemoApplication.getInstance().mBMapManager, mMapListener);
mMapView.getController().enableClick(true);
mMapView.getController().setZoom(12);
// 初始化搜索模塊,註冊事件監聽
mSearch = new MKSearch();
mSearch.init(app.mBMapManager, new MKSearchListener(){
@Override
public void onGetPoiDetailSearchResult(int type, int error) {
if (error != 0) {
Toast.makeText(PoiSearchDemo.this, "抱歉,未找到結果", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(PoiSearchDemo.this, "成功,查看詳情頁面", Toast.LENGTH_SHORT).show();
}
}
//主要是以下代碼
public void onGetPoiResult(MKPoiResult res, int type, int error) {
// 錯誤號可參考MKEvent中的定義
if (error != 0 || res == null) {
Toast.makeText(PoiSearchDemo.this, "抱歉,未找到結果", Toast.LENGTH_LONG).show();
return;
}
// 將地圖移動到第一個POI中心點
if (res.getCurrentNumPois() > 0) {
// 將poi結果顯示到地圖上
MyPoiOverlay poiOverlay = new MyPoiOverlay(PoiSearchDemo.this, mMapView, mSearch);
poiOverlay.setData(res.getAllPoi());
mMapView.getOverlays().clear();
mMapView.getOverlays().add(poiOverlay);
mMapView.refresh();
//當ePoiType爲2(公交線路)或4(地鐵線路)時, poi座標爲空
for( MKPoiInfo info : res.getAllPoi() ){
if ( info.pt != null ){
mMapView.getController().animateTo(info.pt);
break;
}
}
} else if (res.getCityListNum() > 0) {
String strInfo = "在";
for (int i = 0; i < res.getCityListNum(); i++) {
strInfo += res.getCityListInfo(i).city;
strInfo += ",";
}
strInfo += "找到結果";
Toast.makeText(PoiSearchDemo.this, strInfo, Toast.LENGTH_LONG).show();
}
}
public void onGetDrivingRouteResult(MKDrivingRouteResult res,
int error) {
}
public void onGetTransitRouteResult(MKTransitRouteResult res,
int error) {
}
public void onGetWalkingRouteResult(MKWalkingRouteResult res,
int error) {
}
public void onGetAddrResult(MKAddrInfo res, int error) {
}
public void onGetBusDetailResult(MKBusLineResult result, int iError) {
}
//主要代碼
public void onGetSuggestionResult(MKSuggestionResult res, int arg1) {
if (arg1 != 0 || res == null) {
Toast.makeText(PoiSearchDemo.this, "抱歉,未找到結果", Toast.LENGTH_LONG).show();
return;
}
int nSize = res.getSuggestionNum();
mStrSuggestions = new String[nSize];
for (int i = 0; i < nSize; i++) {
mStrSuggestions[i] = res.getSuggestion(i).city + res.getSuggestion(i).key;
}
}
});
// 設定搜索按鈕的響應
mBtnSearch = (Button)findViewById(R.id.search);
OnClickListener clickListener = new OnClickListener(){
public void onClick(View v) {
SearchButtonProcess(v);
}
};
mBtnSearch.setOnClickListener(clickListener);
}
@Override
protected void onPause() {
mMapView.onPause();
super.onPause();
}
@Override
protected void onResume() {
mMapView.onResume();
super.onResume();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mMapView.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mMapView.onRestoreInstanceState(savedInstanceState);
}
@Override
protected void onDestroy() {
mMapView.destroy();
super.onDestroy();
}
private void initMapView() {
mMapView.setLongClickable(true);
mMapView.getController().setZoom(14);
mMapView.getController().enableClick(true);
mMapView.displayZoomControls(true);
}
void SearchButtonProcess(View v) {
if (mBtnSearch.equals(v)) {
EditText editCity = (EditText)findViewById(R.id.city);
EditText editSearchKey = (EditText)findViewById(R.id.searchkey);
mSearch.poiSearchInCity(editCity.getText().toString(),
editSearchKey.getText().toString());
}
}
}