1、設定AndroidManfest.xml許可權
View Code
<!-- 訪問網路的許可權 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 訪問精確位置的許可權 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 訪問網路狀態的許可權 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 訪問WIFI網路狀態的許可權 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 改變WIFI網路狀態的許可權 --> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 讀寫儲存卡的許可權 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 讀取電話狀態的許可權 --> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
2、配置jar包
3、初始化設定BMapManager
View Code
mapManager = new BMapManager(this); mapManager.init("EDB67AD764D300895C95ABA02A4DDC58D5485CCD", new MyMKGeneralListener()); // 設定通知間隔:iMaxSecond - 最大通知間隔,單位:秒;iMinSecond - 最小通知間隔,單位:秒 mapManager.getLocationManager().setNotifyInternal(20, 5);
4、擷取手機經緯度,並顯示地址資訊
View Code
mapManager.getLocationManager().requestLocationUpdates(new MyLocationListener());mapManager.start();
在LocationListener中擷取經緯度
View Code
class MyLocationListener implements LocationListener { @Override public void onLocationChanged(Location arg0) { int jindu = (int) (arg0.getLatitude()*1000000); int weidu = (int) (arg0.getLongitude()*1000000); tv1.setText("經度:" + jindu + ",緯度:" + weidu); MKSearch search = new MKSearch(); search.init(mapManager, new MyMKSearchListener()); search.reverseGeocode(new GeoPoint(jindu, weidu)); } }
在MKSearch介面中進行地址轉化
View Code
@Override public void onGetAddrResult(MKAddrInfo arg0, int arg1) { if (arg0 == null) { tv2.setText("沒有擷取想要的位置"); } else { GeoPoint point = arg0.geoPt; tv2.setText("地址:" + arg0.strAddr + ",座標:" + point.getLatitudeE6() + "," + point.getLongitudeE6()); } }
效果:
源碼下載:BaiduMapTest.rar
附加部分解釋
View Code
/** * 實現MKSearchListener介面,用於實現非同步搜尋服務,得到搜尋結果 * * @author liufeng */public class MySearchListener implements MKSearchListener { /** * 根據經緯度搜尋地址資訊結果 * @param result 搜尋結果 * @param iError 錯誤號碼(0表示正確返回) */ @Override public void onGetAddrResult(MKAddrInfo result, int iError) { } /** * 駕車路線搜尋結果 * @param result 搜尋結果 * @param iError 錯誤號碼(0表示正確返回) */ @Override public void onGetDrivingRouteResult(MKDrivingRouteResult result, int iError) { } /** * POI搜尋結果(範圍檢索、城市POI檢索、周邊檢索) * @param result 搜尋結果 * @param type 返回結果類型(11,12,21:poi列表 7:城市列表) * @param iError 錯誤號碼(0表示正確返回) */ @Override public void onGetPoiResult(MKPoiResult result, int type, int iError) { } /** * 公交轉乘路線搜尋結果 * @param result 搜尋結果 * @param iError 錯誤號碼(0表示正確返回) */ @Override public void onGetTransitRouteResult(MKTransitRouteResult result, int iError) { } /** * 步行路線搜尋結果 * @param result 搜尋結果 * @param iError 錯誤號碼(0表示正確返回) */ @Override public void onGetWalkingRouteResult(MKWalkingRouteResult result, int iError) { }}