1、設置AndroidManfest.xml權限

<!-- 訪問網絡的權限 --> <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

mapManager = new BMapManager(this); mapManager.init("EDB67AD764D300895C95ABA02A4DDC58D5485CCD", new MyMKGeneralListener()); // 設置通知間隔:iMaxSecond - 最大通知間隔,單位:秒;iMinSecond - 最小通知間隔,單位:秒 mapManager.getLocationManager().setNotifyInternal(20, 5);
4、獲取手機經緯度,並顯示地址信息

mapManager.getLocationManager().requestLocationUpdates( new MyLocationListener()); mapManager.start();
在LocationListener中獲取經緯度

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接口中進行地址轉化

@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
附加部分解釋

/** * 實現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) { } }