1. 程式人生 > >android使用百度地圖SDK獲取定位資訊

android使用百度地圖SDK獲取定位資訊

本文使用Android Studio開發。

獲取定位資訊相對簡單,我們只需要如下幾步:

第三步,建立Android Studio工程(略過不說),配置環境:
將解壓後的檔案放入libs資料夾下,並在src/main下建立一個叫做jniLibs的資料夾,並把解壓後內的資料夾靠進去,如下圖:
這裡寫圖片描述 這裡寫圖片描述

第四步,將BaiduLBS_Android.jar加入環境變數(右鍵,Add As Library),並在app的build.gradle中的android中新增:

 sourceSets {
        main {
            jniLibs.srcDirs = ['libs'
] } }

如圖:
這裡寫圖片描述

第五步,在AndroidManifest.xml檔案中宣告許可權:

<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <!--網路定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!--GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

並在application標籤中新增如下內容:

 <meta-data
            android:name="com.baidu.lbsapi.API_KEY"
            android:value
="你申請的API key" />
<service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" />

第六步,測試程式碼,獲取定位資訊:

public class MainActivity extends AppCompatActivity {

    public LocationClient mLocationClient = null;
    public BDLocationListener myListener = new MyLocationListener();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        startLocate();
    }

    /**
     * 定位
     */
    private void startLocate() {
        mLocationClient = new LocationClient(getApplicationContext());     //宣告LocationClient類
        mLocationClient.registerLocationListener(myListener);    //註冊監聽函式
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationClientOption.LocationMode.Battery_Saving
        );//可選,預設高精度,設定定位模式,高精度,低功耗,僅裝置
        option.setCoorType("bd09ll");//可選,預設gcj02,設定返回的定位結果座標系
        int span = 1000;
        option.setScanSpan(span);//可選,預設0,即僅定位一次,設定發起定位請求的間隔需要大於等於1000ms才是有效的
        option.setIsNeedAddress(true);//可選,設定是否需要地址資訊,預設不需要
        option.setOpenGps(true);//可選,預設false,設定是否使用gps
        option.setLocationNotify(true);//可選,預設false,設定是否當GPS有效時按照1S/1次頻率輸出GPS結果
        option.setIsNeedLocationDescribe(true);//可選,預設false,設定是否需要位置語義化結果,可以在BDLocation.getLocationDescribe裡得到,結果類似於“在北京天安門附近”
        option.setIsNeedLocationPoiList(true);//可選,預設false,設定是否需要POI結果,可以在BDLocation.getPoiList裡得到
        option.setIgnoreKillProcess(false);//可選,預設true,定位SDK內部是一個SERVICE,並放到了獨立程序,設定是否在stop的時候殺死這個程序,預設不殺死
        option.SetIgnoreCacheException(false);//可選,預設false,設定是否收集CRASH資訊,預設收集
        option.setEnableSimulateGps(false);//可選,預設false,設定是否需要過濾GPS模擬結果,預設需要
        mLocationClient.setLocOption(option);
        //開啟定位
        mLocationClient.start();
    }

    private class MyLocationListener implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            StringBuffer sb = new StringBuffer(256);
            sb.append("time : ");
            sb.append(location.getTime());
            sb.append("\nerror code : ");
            sb.append(location.getLocType());
            sb.append("\nlatitude : ");
            sb.append(location.getLatitude());
            sb.append("\nlontitude : ");
            sb.append(location.getLongitude());
            sb.append("\nradius : ");
            sb.append(location.getRadius());
            if (location.getLocType() == BDLocation.TypeGpsLocation) {// GPS定位結果
                sb.append("\nspeed : ");
                sb.append(location.getSpeed());// 單位:公里每小時
                sb.append("\nsatellite : ");
                sb.append(location.getSatelliteNumber());
                sb.append("\nheight : ");
                sb.append(location.getAltitude());// 單位:米
                sb.append("\ndirection : ");
                sb.append(location.getDirection());// 單位度
                sb.append("\naddr : ");
                sb.append(location.getAddrStr());
                sb.append("\ndescribe : ");
                sb.append("gps定位成功");

            } else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {// 網路定位結果
                sb.append("\naddr : ");
                sb.append(location.getAddrStr());
                //運營商資訊
                sb.append("\noperationers : ");
                sb.append(location.getOperators());
                sb.append("\ndescribe : ");
                sb.append("網路定位成功");
            } else if (location.getLocType() == BDLocation.TypeOffLineLocation) {// 離線定位結果
                sb.append("\ndescribe : ");
                sb.append("離線定位成功,離線定位結果也是有效的");
            } else if (location.getLocType() == BDLocation.TypeServerError) {
                sb.append("\ndescribe : ");
                sb.append("服務端網路定位失敗,可以反饋IMEI號和大體定位時間到[email protected],會有人追查原因");
            } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
                sb.append("\ndescribe : ");
                sb.append("網路不同導致定位失敗,請檢查網路是否通暢");
            } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
                sb.append("\ndescribe : ");
                sb.append("無法獲取有效定位依據導致定位失敗,一般是由於手機的原因,處於飛航模式下一般會造成這種結果,可以試著重啟手機");
            }
            sb.append("\nlocationdescribe : ");
            sb.append(location.getLocationDescribe());// 位置語義化資訊
            List<Poi> list = location.getPoiList();// POI資料
            if (list != null) {
                sb.append("\npoilist size = : ");
                sb.append(list.size());
                for (Poi p : list) {
                    sb.append("\npoi= : ");
                    sb.append(p.getId() + " " + p.getName() + " " + p.getRank());
                }
            }
            Log.e("描述:", sb.toString());
        }
    }

相關推薦

android使用地圖SDK獲取定位資訊

本文使用Android Studio開發。 獲取定位資訊相對簡單,我們只需要如下幾步: 第三步,建立Android Studio工程(略過不說),配置環境: 將解壓後的檔案放入libs資料夾下,並在src/main下建立一個叫做jniLibs的資料

android 地圖SDK 獲取手機附近POI興趣點列表 (過時)

文章內容已經過時~大家去百度官方api學習。 http://developer.baidu.com/map/ http://lbsyun.baidu.com/sdk/download 功能描述:獲取手機自身附近的興趣點(Poi, 之後使用Poi表示興趣點)列表,顯示

Android使用地圖SDK實現定位與方向感測器匹配

public class MylocationListener implements BDLocationListener { //定位請求回撥介面 private boolean isFirstIn=true; //定位請求回撥函式,這裡面會得到定位資

iOS·採用第三方(地圖SDK)實現定位等功能開發

 陳滿iOS  關注 2017.05.01 01:06* 字數 2212 閱讀 6818評論 7喜歡 133 1.申請金鑰 首先,申請一個baidu賬號,接著進入新建金鑰入口申請成為baidu地圖開發者,填寫相關開發者資訊和簡訊驗證碼。接

ios 整合地圖獲取定位,反向地理編碼)

原因 :之所以使用百度地圖,是因為當時使用蘋果自帶的定位給後臺傳經緯度,後臺用百度解析誤差比較大,所以換成了百度地圖 本文主要講解下cocoapods 整合 看詳細整合請點選(cocoapod整合連結) 1 、首先去百度地圖開放平臺註冊賬戶 點選立即使用 然後註冊 2、然後進行郵箱啟用

地圖SDK整合定位,衛星地圖

其中兩種整合方式基本相同 1.百度地圖第三方SDK的開放平臺建立應用 2.下載官方的SDK 3.複製到專案的libs目錄下 4.但這樣工程並不會自動載入libs下的so檔案,需配置so檔案的路徑為該libs路徑,關聯所有地圖SDK的so檔案 App下的groud.build的

mui使用地圖sdk定位方法

一、使用前配置:參考http://ask.dcloud.net.cn/article/29        注意事項:     (1)HBuilder預設打包使用的簽名為"BA:AD:09:3A:82:82:9F:

Android 地圖 SDK v3.0.0 (三) 新增覆蓋物Marker與InfoWindow的使用

上篇部落格已經實現了地圖的定位以及結合了方向感測器使用者路痴定位方向,如果你還不清楚,請檢視:Android 百度地圖 SDK v3.0.0 (二) 定位與結合方向感測器,本章會教大家如何新增覆蓋物,實現周邊搜尋,以及對覆蓋物的點擊出現介紹等效果。效果圖:我們的需求是,當用戶

安卓開發使用地圖sdk實現定位,新增marker,城市切換等功能

許久不寫部落格,慢慢的變的有些懶惰。keep coding,keep learining。 關於學習使用百度地圖sdk,我六點要說。。。。。。哈哈哈哈,玩笑歸玩笑,說正經的,百度地圖sdk的幫助文件寫的不是很好,很多地方不完善,有偷懶的嫌疑,建議學習時配合類參考,有歧義不清

Android 地圖sdk 標註圖marker中可以切換顯示不同內容

記錄一個前段時間解決的功能需求 先直接上圖片看看實現後的效果: 具體需求為,在地圖頁上顯示出所有的場站marker之後,點選左側的按鈕可以實現動態切換場站marker中顯示的資料。 實現思路為:構造marker時,icon方法中傳入的引數Bit

Android 地圖新增標記+定位+導航(從定位點開始導航到自己新增的點)

百度地圖的官方文件說的不是很清楚,我自己花幾天做了一個是新增標籤+定位+導航啊。僅供參考。 一.普通地圖,定位,新增標記,初始化導航SDK package com.example.salesman; import java.lang.reflect.Method; imp

Android地圖SDK 導航初始化和地圖初始化引起的衝突

       如題,同樣是百度地圖SDK開發過程中遇到的一個問題,交代下背景:        開發了一款內嵌百度地圖的應用,因此裡面差不多將目前百度地圖SDK開放的主要功能都用到了,定位,地圖顯示,覆蓋物標示,POI搜尋,行程路線規劃,GPS導航。。等等都有。開發最開始用到

android地圖基礎定位不用開啟許可權也可以獲取經緯度成功?什麼鬼

最近專案中需要使用百度地圖sdk,發現一個問題,手機未開啟地圖定位許可權,在地圖定位監聽裡面竟然可以返回狀態碼為161的正確定位返回,是不是很神奇。 測試了百度demo,把定位許可權關閉,也是可以定位成功的。看來確實不需要定位許可權,就可以獲取定位資訊呀。 這就讓我暈了,那這個許可權什麼時候

Android定位&地圖&導航——基於地圖移動獲取位置和自動定位

public class MainActivity extends Activity { public MyApplication app; static MapView mMapView = null; public MKMapViewListener mMapListen

地圖sdk定位所在的城市名稱和街道資訊

變數的宣告:     String city = null;  //當前所在的城市     String addr = null; //當前所在地點 在MyLocationListenner implements BDLocationListener 類中獲取城市名: p

Android玩轉地圖Sha1獲取正確姿勢?

views num adl 定位 提示 合作 動態 例如 登錄 場景一 由於近期項目鐘要用到定位功能因此肯定須要用到地圖以及地位功能,相信大家也知道眼下國內比較出名的地圖像百度、高德、騰訊等這些還是用到比較多的。於是思考了一下決定還是用百

Android地圖(二)結合方向傳感器我們自己定位哪裏走

troy 真機 pretty 刪除文件 RR tap 大神 素材 near Android百度地圖(二)結合方向傳感器我們自己定位哪裏走 本文代碼在http://b

地圖sdk sha1秘鑰獲取有種想吐的趕腳

src andro files inf com admin oid file http 擼代碼坐的腰算背疼還只是弄一個不是項目裏邊需要的升級版本的so 日 需要sha1 指紋秘鑰,還有項目包, 才能用百度地圖sdk 這個找sha1 獲取廢了20分鐘, 顯示全盤找keyt

Android 整合地圖實現裝置定位

Android 整合百度地圖實現裝置定位步驟1:申請android 端SDK :http://lbsyun.baidu.com/步驟2:下載基礎版SDK步驟3:下載示例程式步驟4:開始整合:ak加入libs加入SDKInitializer.setCoordType(CoordType.BD09LL);圖示類

Android地圖開發定位和路線導航

在寫之前要先加入百度地圖sdk的jar包從百度地圖開發者官網上就能下載 百度地圖sdk下載 官網(可翻牆選擇):http://developer.android.com/sdk/index.html 不可翻牆選擇:http://www.androiddevtools.cn/ 而其中用