android百度地圖——獲取當前地理位置


首先需要准備的工具:

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()方法中就可獲取當前地理位置。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM