Android 實踐項目開發 總結java
課程:移動平臺應用開發實踐 班級:201592 姓名:楊鳳 學號:20159213node
成績:___________ 指導老師:婁嘉鵬 實驗日期 :2015.12.06.android
實驗名稱: android 百度地圖開發 git
實驗目的與要求: 一、實現定位 二、查詢公交路線 三、目的地查詢 api
實驗目的:架構
在此次的項目開發中,我作的軟件主要功能是調用百度地圖的接口,實現定位、查詢公交路線app
和查找目的地的位置(餐館、酒店、風景區)。此次項目的開發主要是爲了學會分析項目的架構、eclipse
建模、項目中工做分配及須要解決的問題。ide
實驗內容函數
一、實現定位功能。當客戶去到一個陌生的地方,他可能首先想知道本身所在的位置,因此本項目的
一個功能是實現定位,知足客戶的需求。並在這裏講解定位實現的過程,及展現定位的截圖。由於代碼
中詳細講解了代碼的做用,在這裏就再也不一 一講解。
實現該代碼的主要main.java
package baidumapsdk.demo; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import com.baidu.location.BDLocation; import com.baidu.location.BDLocationListener; import com.baidu.location.LocationClient; import com.baidu.location.LocationClientOption; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.BitmapDescriptor; import com.baidu.mapapi.map.BitmapDescriptorFactory; import com.baidu.mapapi.map.MapStatusUpdate; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.MapView; import com.baidu.mapapi.map.MyLocationConfiguration; import com.baidu.mapapi.map.MyLocationConfiguration.LocationMode; import com.baidu.mapapi.map.MyLocationData; import com.baidu.mapapi.model.LatLng; /** * 此demo用來展現如何結合定位SDK實現定位,並使用MyLocationOverlay繪製定位位置 同時展現如何使用自定義圖標繪製並點擊時彈出泡泡 * */ public class LocationDemo extends Activity { // 定位相關 LocationClient mLocClient;//定位服務的客戶端 public MyLocationListenner myListener = new MyLocationListenner(); private LocationMode mCurrentMode;//定位模式,高精度、低功耗、等 BitmapDescriptor mCurrentMarker;//用戶定義定位圖標 MapView mMapView;//顯示地圖的視圖。它負責從服務端獲取地圖數據它將會捕捉屏幕觸控手勢事件 BaiduMap mBaiduMap;//定義 BaiduMap 地圖對象的操做方法與接口 // UI相關 OnCheckedChangeListener radioButtonListener; Button requestLocButton; boolean isFirstLoc = true;// 是否首次定位 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_location); requestLocButton = (Button) findViewById(R.id.button1);//得到界面上Button的對象 mCurrentMode = LocationMode.NORMAL;//普通模型 requestLocButton.setText("普通"); OnClickListener btnClickListener = new OnClickListener() {//實現點擊監聽 public void onClick(View v) { switch (mCurrentMode) { case NORMAL: requestLocButton.setText("跟隨"); mCurrentMode = LocationMode.FOLLOWING; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); break; case COMPASS: requestLocButton.setText("普通"); mCurrentMode = LocationMode.NORMAL; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); break; case FOLLOWING: requestLocButton.setText("羅盤"); mCurrentMode = LocationMode.COMPASS; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); break; } } }; requestLocButton.setOnClickListener(btnClickListener); //RadioGroup中使用類組單選按鈕。若是咱們選中一個單選按鈕,他會自動取消同一組以前的單選按鈕 RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup); radioButtonListener = new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if (checkedId == R.id.defaulticon) { // 傳入null則,恢復默認圖標 mCurrentMarker = null; mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, null));//設置定位圖層配置信息,只有先容許定位圖層後設置定位圖層配置信息纔會生效, } if (checkedId == R.id.customicon) { // 修改成自定義marker mCurrentMarker = BitmapDescriptorFactory .fromResource(R.drawable.icon_geo); mBaiduMap .setMyLocationConfigeration(new MyLocationConfiguration( mCurrentMode, true, mCurrentMarker)); }//MyLocationConfiguration獲取定位圖層配置信息 } }; group.setOnCheckedChangeListener(radioButtonListener); // 地圖初始化 mMapView = (MapView) findViewById(R.id.bmapView); mBaiduMap = mMapView.getMap(); // 開啓定位圖層 mBaiduMap.setMyLocationEnabled(true); // 定位初始化 mLocClient = new LocationClient(this); mLocClient.registerLocationListener(myListener); LocationClientOption option = new LocationClientOption(); option.setOpenGps(true);// 打開gps option.setCoorType("bd09ll"); // 設置座標類型 option.setScanSpan(1000);//定位時間間隔 mLocClient.setLocOption(option); mLocClient.start(); } /** * 定位SDK監聽函數 */ public class MyLocationListenner implements BDLocationListener { @Override public void onReceiveLocation(BDLocation location) { // map view 銷燬後不在處理新接收的位置 if (location == null || mMapView == null) return; MyLocationData locData = new MyLocationData.Builder() .accuracy(location.getRadius()) // 此處設置開發者獲取到的方向信息,順時針0-360 .direction(100).latitude(location.getLatitude()) .longitude(location.getLongitude()).build(); mBaiduMap.setMyLocationData(locData); if (isFirstLoc) { isFirstLoc = false; LatLng ll = new LatLng(location.getLatitude(), location.getLongitude()); MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll); mBaiduMap.animateMapStatus(u); } } public void onReceivePoi(BDLocation poiLocation) { } } @Override protected void onPause() { mMapView.onPause(); super.onPause(); } @Override protected void onResume() { mMapView.onResume(); super.onResume(); } @Override protected void onDestroy() { // 退出時銷燬定位 mLocClient.stop(); // 關閉定位圖層 mBaiduMap.setMyLocationEnabled(false); mMapView.onDestroy(); mMapView = null; super.onDestroy(); } }
實現的佈局圖xml代碼是:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <com.baidu.mapapi.map.MapView android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clickable="true" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginTop="80dip" android:background="#D000" android:minWidth="100dip" android:orientation="vertical" android:padding="2dp" > <RadioGroup android:id="@+id/radioGroup" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="定位icon" > <RadioButton android:id="@+id/defaulticon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="默認圖標" > </RadioButton> <RadioButton android:id="@+id/customicon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="自定義圖標" > </RadioButton> </RadioGroup> </LinearLayout> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_marginRight="25dp" android:layout_marginTop="10dip" /> </RelativeLayout>
展現定位圖片
二、實現公交路線的查詢。隨着城市的發展,公交是一個城市必不可少的交通工具,可是隨着城市的規模
的擴大,公交路線的衆多及公交的換乘,使客戶想乘坐正確的公交車到達目的地變得困難。根據客戶的需
求開發了公交查詢工具。並將83路公交車做爲初始值。
實現公交查詢的main.java
package baidumapsdk.demo; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.InfoWindow; import com.baidu.mapapi.map.MapPoi; import com.baidu.mapapi.map.MapStatusUpdateFactory; import com.baidu.mapapi.map.SupportMapFragment; import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.overlayutil.BusLineOverlay; import com.baidu.mapapi.search.busline.BusLineResult; 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 FragmentActivity implements OnGetPoiSearchResultListener, OnGetBusLineSearchResultListener, BaiduMap.OnMapClickListener { private Button mBtnPre = null;// 上一個節點 private Button mBtnNext = null;// 下一個節點 private int nodeIndex = -2;// 節點索引,供瀏覽節點時使用 private BusLineResult route = null;// 保存駕車/步行路線數據的變量,供瀏覽節點時使用 private List<String> busLineIDList = null; private int busLineIndex = 0; // 搜索相關 private PoiSearch mSearch = null; // 搜索模塊,也可去掉地圖模塊獨立使用 private BusLineSearch mBusLineSearch = null;//城市公交查詢 private BaiduMap mBaiduMap = null; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_busline); CharSequence titleLable = "公交線路查詢功能";//在圖層中顯示名稱 setTitle(titleLable); mBtnPre = (Button) findViewById(R.id.pre); mBtnNext = (Button) findViewById(R.id.next); mBtnPre.setVisibility(View.INVISIBLE); mBtnNext.setVisibility(View.INVISIBLE); mBaiduMap = ((SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.bmapView)).getBaiduMap(); mBaiduMap.setOnMapClickListener(this);//地圖單擊事件監聽接口 mSearch = PoiSearch.newInstance();//POI檢索接口 mSearch.setOnGetPoiSearchResultListener(this);//設置poi檢索監聽者 mBusLineSearch = BusLineSearch.newInstance(); mBusLineSearch.setOnGetBusLineSearchResultListener(this);//設置公交詳情檢索結果監聽者 busLineIDList = new ArrayList<String>(); } /** * 發起檢索 * * @param v */ public void searchButtonProcess(View v) { busLineIDList.clear(); busLineIndex = 0; mBtnPre.setVisibility(View.INVISIBLE); mBtnNext.setVisibility(View.INVISIBLE); EditText editCity = (EditText) findViewById(R.id.city); EditText editSearchKey = (EditText) findViewById(R.id.searchkey); // 發起poi檢索,從獲得全部poi中找到公交線路類型的poi,再使用該poi的uid進行公交詳情搜索 mSearch.searchInCity((new PoiCitySearchOption()).city( editCity.getText().toString()).keyword( editSearchKey.getText().toString())); } public void SearchNextBusline(View v) { if (busLineIndex >= busLineIDList.size()) { busLineIndex = 0; }//在編輯中輸入文本得而後得到公交路線 if (busLineIndex >= 0 && busLineIndex < busLineIDList.size() && busLineIDList.size() > 0) { mBusLineSearch.searchBusLine((new BusLineSearchOption() .city(((EditText) findViewById(R.id.city)).getText() .toString()).uid(busLineIDList.get(busLineIndex)))); busLineIndex++; } } /** * 節點瀏覽示例 * * @param v */ public void nodeClick(View v) { if (nodeIndex < -1 || route == null || nodeIndex >= route.getStations().size()) return; TextView popupText = new TextView(this); popupText.setBackgroundResource(R.drawable.popup);//設置背景源 popupText.setTextColor(0xff000000);//設置文本顏色 // 上一個節點 if (mBtnPre.equals(v) && nodeIndex > 0) { // 索引減 nodeIndex--; } // 下一個節點 if (mBtnNext.equals(v) && nodeIndex < (route.getStations().size() - 1)) { // 索引加 nodeIndex++; } if(nodeIndex >= 0){ // 移動到指定索引的座標 mBaiduMap.setMapStatus(MapStatusUpdateFactory.newLatLng(route .getStations().get(nodeIndex).getLocation())); // 彈出泡泡 popupText.setText(route.getStations().get(nodeIndex).getTitle()); mBaiduMap.showInfoWindow(new InfoWindow(popupText, route.getStations() .get(nodeIndex).getLocation(), 0)); } } @Override protected void onPause() { super.onPause(); } @Override protected void onResume() { super.onResume(); } @Override protected void onDestroy() { mSearch.destroy(); mBusLineSearch.destroy(); super.onDestroy(); } @Override public void onGetBusLineResult(BusLineResult result) { if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(BusLineSearchDemo.this, "抱歉,未找到結果", Toast.LENGTH_LONG).show(); return; } mBaiduMap.clear(); route = result; nodeIndex = -1; BusLineOverlay overlay = new BusLineOverlay(mBaiduMap); mBaiduMap.setOnMarkerClickListener(overlay); overlay.setData(result); overlay.addToMap(); overlay.zoomToSpan(); mBtnPre.setVisibility(View.VISIBLE); mBtnNext.setVisibility(View.VISIBLE); Toast.makeText(BusLineSearchDemo.this, result.getBusLineName(), Toast.LENGTH_SHORT).show(); } @Override public void onGetPoiResult(PoiResult result) { if (result == null || result.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(BusLineSearchDemo.this, "抱歉,未找到結果", Toast.LENGTH_LONG).show(); return; } // 遍歷全部poi,找到類型爲公交線路的poi busLineIDList.clear(); for (PoiInfo poi : result.getAllPoi()) { if (poi.type == PoiInfo.POITYPE.BUS_LINE || poi.type == PoiInfo.POITYPE.SUBWAY_LINE) { busLineIDList.add(poi.uid); } } SearchNextBusline(null); route = null; } @Override public void onGetPoiDetailResult(PoiDetailResult result) { } @Override public void onMapClick(LatLng point) { mBaiduMap.hideInfoWindow(); } @Override public boolean onMapPoiClick(MapPoi poi) { return false; } }
佈局圖的xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="在" /> <EditText android:id="@+id/city" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="北京" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="市內找" /> <EditText android:id="@+id/searchkey" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="83" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="公交車" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/search" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="2dip" android:layout_marginRight="2dip" android:layout_weight="1" android:background="@drawable/button_style" android:onClick="searchButtonProcess" android:text="開始" /> <Button android:id="@+id/nextline" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="2dip" android:layout_marginRight="2dip" android:layout_weight="1" android:background="@drawable/button_style" android:onClick="SearchNextBusline" android:text="下一條" /> </LinearLayout> </LinearLayout> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <fragment android:id="@+id/bmapView" android:layout_width="fill_parent" android:layout_height="fill_parent" class="com.baidu.mapapi.map.SupportMapFragment" android:clickable="true" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignWithParentIfMissing="false" android:layout_centerHorizontal="true" android:layout_centerVertical="false" android:layout_marginBottom="10dip" > <Button android:id="@+id/pre" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="2dip" android:layout_marginRight="2dip" android:layout_weight="1.0" android:background="@drawable/pre_" android:onClick="nodeClick" /> <Button android:id="@+id/next" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginLeft="2dip" android:layout_marginRight="2dip" android:layout_weight="1.0" android:background="@drawable/next_" android:onClick="nodeClick" /> </LinearLayout> </RelativeLayout> </LinearLayout>
展示的圖形
三、查詢目的地。客戶想知道在他的附近有什麼餐館或者酒店,客戶不可能把周圍的地方都找一遍,
這也是不現實的事情,爲了方便快速的尋找到他想要的結果,開發了目的地的查詢。
主要代碼main.java
package baidumapsdk.demo; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.EditText; import android.widget.Toast; import com.baidu.mapapi.map.BaiduMap; import com.baidu.mapapi.map.SupportMapFragment; import com.baidu.mapapi.overlayutil.PoiOverlay; import com.baidu.mapapi.search.core.CityInfo; 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.PoiDetailSearchOption; import com.baidu.mapapi.search.poi.PoiResult; import com.baidu.mapapi.search.poi.PoiSearch; import com.baidu.mapapi.search.sug.OnGetSuggestionResultListener; import com.baidu.mapapi.search.sug.SuggestionResult; import com.baidu.mapapi.search.sug.SuggestionSearch; import com.baidu.mapapi.search.sug.SuggestionSearchOption; /** * 演示poi搜索功能 */ public class PoiSearchDemo extends FragmentActivity implements OnGetPoiSearchResultListener, OnGetSuggestionResultListener { private PoiSearch mPoiSearch = null; private SuggestionSearch mSuggestionSearch = null; private BaiduMap mBaiduMap = null; /** * 搜索關鍵字輸入窗口 */ private AutoCompleteTextView keyWorldsView = null; private ArrayAdapter<String> sugAdapter = null; private int load_Index = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_poisearch); // 初始化搜索模塊,註冊搜索事件監聽 mPoiSearch = PoiSearch.newInstance(); mPoiSearch.setOnGetPoiSearchResultListener(this); mSuggestionSearch = SuggestionSearch.newInstance(); mSuggestionSearch.setOnGetSuggestionResultListener(this); keyWorldsView = (AutoCompleteTextView) findViewById(R.id.searchkey); sugAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line); keyWorldsView.setAdapter(sugAdapter); mBaiduMap = ((SupportMapFragment) (getSupportFragmentManager() .findFragmentById(R.id.map))).getBaiduMap(); /** * 當輸入關鍵字變化時,動態更新建議列表 */ keyWorldsView.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable arg0) { } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) { if (cs.length() <= 0) { return; } String city = ((EditText) findViewById(R.id.city)).getText() .toString(); /** * 使用建議搜索服務獲取建議列表,結果在onSuggestionResult()中更新 */ mSuggestionSearch .requestSuggestion((new SuggestionSearchOption()) .keyword(cs.toString()).city(city)); } }); } @Override protected void onPause() { super.onPause(); } @Override protected void onResume() { super.onResume(); } @Override protected void onDestroy() { mPoiSearch.destroy(); mSuggestionSearch.destroy(); super.onDestroy(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } /** * 影響搜索按鈕點擊事件 * * @param v */ public void searchButtonProcess(View v) { EditText editCity = (EditText) findViewById(R.id.city); EditText editSearchKey = (EditText) findViewById(R.id.searchkey); mPoiSearch.searchInCity((new PoiCitySearchOption()) .city(editCity.getText().toString()) .keyword(editSearchKey.getText().toString()) .pageNum(load_Index)); } public void goToNextPage(View v) { load_Index++; searchButtonProcess(null); } public void onGetPoiResult(PoiResult result) { if (result == null || result.error == SearchResult.ERRORNO.RESULT_NOT_FOUND) { Toast.makeText(PoiSearchDemo.this, "未找到結果", Toast.LENGTH_LONG) .show(); return; } if (result.error == SearchResult.ERRORNO.NO_ERROR) { mBaiduMap.clear(); PoiOverlay overlay = new MyPoiOverlay(mBaiduMap); mBaiduMap.setOnMarkerClickListener(overlay); overlay.setData(result); overlay.addToMap(); overlay.zoomToSpan(); return; } if (result.error == SearchResult.ERRORNO.AMBIGUOUS_KEYWORD) { // 當輸入關鍵字在本市沒有找到,但在其餘城市找到時,返回包含該關鍵字信息的城市列表 String strInfo = "在"; for (CityInfo cityInfo : result.getSuggestCityList()) { strInfo += cityInfo.city; strInfo += ","; } strInfo += "找到結果"; Toast.makeText(PoiSearchDemo.this, strInfo, Toast.LENGTH_LONG) .show(); } } public void onGetPoiDetailResult(PoiDetailResult result) { if (result.error != SearchResult.ERRORNO.NO_ERROR) { Toast.makeText(PoiSearchDemo.this, "抱歉,未找到結果", Toast.LENGTH_SHORT) .show(); } else { Toast.makeText(PoiSearchDemo.this, result.getName() + ": " + result.getAddress(), Toast.LENGTH_SHORT) .show(); } } @Override public void onGetSuggestionResult(SuggestionResult res) { if (res == null || res.getAllSuggestions() == null) { return; } sugAdapter.clear(); for (SuggestionResult.SuggestionInfo info : res.getAllSuggestions()) { if (info.key != null) sugAdapter.add(info.key); } sugAdapter.notifyDataSetChanged(); } private class MyPoiOverlay extends PoiOverlay { public MyPoiOverlay(BaiduMap baiduMap) { super(baiduMap); } @Override public boolean onPoiClick(int index) { super.onPoiClick(index); PoiInfo poi = getPoiResult().getAllPoi().get(index); // if (poi.hasCaterDetails) { mPoiSearch.searchPoiDetail((new PoiDetailSearchOption()) .poiUid(poi.uid)); // } return true; } } }
佈局代碼xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="50dip" android:orientation="horizontal" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="在" > </TextView> <EditText android:id="@+id/city" android:layout_width="wrap_content" android:layout_height="match_parent" android:text="北京" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="市內找" > </TextView> <AutoCompleteTextView android:id="@+id/searchkey" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.88" android:text="餐廳" /> </LinearLayout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="50dip" android:orientation="horizontal" > <Button android:id="@+id/search" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="12" android:background="@drawable/button_style" android:onClick="searchButtonProcess" android:padding="10dip" android:text="開始" /> <Button android:id="@+id/map_next_data" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="12" android:background="@drawable/button_style" android:onClick="goToNextPage" android:padding="10dip" android:text="下一組數據" /> </LinearLayout> <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.baidu.mapapi.map.SupportMapFragment" /> </LinearLayout>
給出查詢的結果
項目總結
在整個的項目中,遇到了許多問題。分別以下:
一、android studio 環境的搭建。開始在android studio搭建百度地圖開發的環境時,一直提示
導入的.jar包不正確,查找了一些android studio配置百度地圖環境方式。我一 一試過依然不正確;
最終放棄android studio 軟件進行開發。本次項目的軟件是用曾俊宏提供的eclipse軟件進行開發的。
二、網上有不少android百度地圖開發的教程,可是我自借鑑他們作的工程時,發先一個很大的問題
他們導入的.jar包不少着找不到了,利用如今的.jar包,來寫教程給的代碼會出問題。所以找到一個合
適的.jar 包很重要。還有他們提供的android本版本比較低,雖然在eclipse提示有問題,可是問題很
快就消失了。若是咱們將程序導入虛擬機或者實體機,咱們導入的軟件會自動退出,不能正常的工做。
三、在百度地圖開發中心申請key也出現了一些問題,有可能申請的key在工程中是不起做用的。在申
請時必須輸入正確的eclipse 的hash值 和創建工程的包名。不然調不出百度地圖的圖形或者調出來圖形
不能知足工程的須要。
四、因爲時間分配不合理,沒有實現老師的一些要求,所以在作項目的過程當中時間安排很重要。在整個課程中
我對學習的安排是很是錯誤的,主要緣由是大學中養成的懶散性沒有改掉。這在之後的學習中必須改掉的。
在整個課程中學到了不少有益的東西
一、在學習中對知識的總結是一件很重要的事情。即能對前段學到的知識進行概括和了解本身掌握的東西,還能
爲下階段學習進行合理的安排,提升學習的效率。
二、對知識要保持求知,求知慾越強越能激發本身的學習慾望。婁老師是我很好的榜樣,要向老師多學習。
三、在上週,老師的講話,我深受啓發,只有多學習多掌握知識才能找到本身的興趣愛好,在工做中才能
有更多的選擇。
四、移動平臺的課程快要結束了,這不是對java語言的結束,而是我學習的繼續。我會將代碼傳到中國開源中
但願對下屆同窗的學習有幫助。
-