首先需要准備的工具:
1、百度地圖api下載地址:http://developer.baidu.com/map/sdk-android.htm完整版下載后會有以下的三個文件;
功能不多說,自己結合(docs)文檔和(Sample)來了解具體的功能和實現方法。
2、百度秘鑰:http://developer.baidu.com/map/android-mobile-apply-key.htm
大部分的對外開放接口都有一個秘鑰,百度也不例外,秘鑰的申請在官網上有詳細的教程,在這里就不浪費文字啰嗦了。
接下來就開始着手項目:
1、導入百度api:
把Lib文件夾下面的jar文件和os文件一並copy到項目的libs包里面,右擊項目:Build Path——Configure Build Path
——Libraries——Add JARS把兩個包都加載到項目中,接着在Order and Export當中勾選到剛剛導入的兩個文件
2、要獲取地理位置首先的通過百度地圖api來獲取百度自己的經緯度,不能使用通過gps獲取的經緯度來獲取當前地理
位置名稱,原因在百度api中有如下解釋:
http://developer.baidu.com/map/geosdk-symbian-qa.htm
獲取經緯度需要用到LocationClint類,
LocaltionClient中需要設置定位條件,定位條件通過LocationClientOption類來包裝,包裝好之后LocaltionClient只需要
調用LocaltionClient.setLocOption(LocationClientOption)方法即可,接下來就是注冊位置監聽器,
locationClient.registerLocationListener在監聽器中有兩個方法,一看名字就知道我們要用的方法是哪一個,只要在該
方法體中去實現我們的功能,比如獲取經緯度等等,當然這樣還不夠,還需要讓LocaltionClient.start()和LocaltionClient.request();
在這兩個方法執行之后才能獲取到經緯度的值。
其方法如下
public void getLongitdue(){ LocationClient locationClient = new LocationClient(context); //設置定位條件 LocationClientOption option = new LocationClientOption(); option.setOpenGps(true); //是否打開GPS option.setCoorType("bd09ll"); //設置返回值的坐標類型。 option.setPriority(LocationClientOption.NetWorkFirst); //設置定位優先級 option.setProdName(context.getString(R.string.app_name)); //設置產品線名稱。強烈建議您使用自定義的產品線名稱,方便我們以后為您提供更高效准確的定位服務。 option.setScanSpan(100);//設置定時定位的時間間隔。單位毫秒 locationClient.setLocOption(option); //注冊位置監聽器 locationClient.registerLocationListener(new BDLocationListener() { public void onReceivePoi(BDLocation arg0) { } public void onReceiveLocation(BDLocation location) { latitude=location.getLatitude(); longitude=location.getLongitude(); } }); if(locationClient.isStarted()){ locationClient.stop(); } locationClient.start(); locationClient.requestLocation(); locationClient.requestNotifyLocation(); }
獲取到經緯度就方便多了,只需要調用MKsearch類的into()方法和reverseGeocode()方法就可以獲取當前的詳細位置了。
bMapManager=new BMapManager(context); bMapManager.init(myApplication.strKey,myApplication.generalListener); mksearch=new MKSearch(); mksearch.init(bMapManager, new MyMKSearchListener()); getLongitude(); mksearch.reverseGeocode(new GeoPoint((int) ( latitude* 1E6),(int) (longitude * 1E6)));
在MyMKSearchListener當中的 onGetAddrResult()方法中就可獲取當前地理位置。
