1. 程式人生 > >Android 使用百度地圖API來顯示地圖

Android 使用百度地圖API來顯示地圖

 

http://lbsyun.baidu.com/

進入百度地圖開放平臺,登入百度賬號

8fe9917dc3ebc572b502cee76dba2532d90.jpg

05595e29738a8f70662423d97d6b8ebc01c.jpg

2145767a66ebfc79edb4ffa992c247b228e.jpg

選擇應用型別為Android SDK

8b1c5d6ae7d094e73e2fda5f1318232c99a.jpg

釋出版SHA1,和開發板SHA1的獲取方法為:

找到電腦上的.android路徑,一般都在C盤使用者目錄下,

有的配置Android環境變數的話可能在SDK的目錄下

然後開啟Android Studio,開啟Terminal

進入到.android目錄下

輸入 keytool -list -v -keystore debug.keystore

848e72f3f621044eebf56fb7526d74db1e7.jpg

金鑰庫口令不用輸入,直接回車

會顯示證書指紋,裡面有SHA1,直接複製就可以

輸入SHA1和包名後,會自動生成安全碼

然後點選提交,這樣我們就生成了一個金鑰

bbb3f199f72c8cbddfe43de5d8920b9d088.jpg

然後在百度地圖首頁

5848c092a4623e8fc83c60ee4ce776b1d6d.jpg

736f14de47944e8bfc151d4c3739ab2a926.jpg

接下來根據自己的專案需求來勾選相應的功能

edcddd28dd0d81c1da6fcdc3f29c63b2f6c.jpg

73f5e2e1b522c0c499bb0f073bbbaa34b8c.jpg

點選開發包下載,這就是下載好的開發包

7907772d6c50df7286d067dd1b0697f7c3a.jpg

以上就是百度地圖API的準備工作

————————————————————————————————————————————————————————

開發步驟:

  • 配置百度地圖SDK
  • 佈局介面
  • 初始化SDK引用的Context全域性變數
  • 管理地圖生命週期

 將之前下載的BaiduLBS_AndroidSDK_Lib解壓,並將裡面libs目錄中的兩個jar包複製到

Android Studio專案下libs目錄下

05a3293f2e6a83e0898a3e760a99b3912a1.jpg

將libs目錄下的jar包新增到庫當中

d11263b3fe7352ac361028e93a1c2f663ae.jpg

點選ok

同時在build.gradle中會生成工程所依賴的對應的Jar檔案說明,程式碼如下

dependencies{
  implementation files('libs/BaiduLBS_Android.jar')files('libs/BaiduLBS_Android.jar')
}

在src目錄下的main目錄中建立jniLibs目錄

然後將百度地圖SDK中的lib目錄複製到剛剛建立的目錄

411674e8fd90e7b01c27cf4f223c4900217.jpg

5f8041f5e96f3720d2a844b09b0790aad76.jpg

但有時候這樣工程並不會自動載入libs下的so檔案,

需配置so檔案的路徑為該libs路徑,關聯所有地圖SDK的so檔案,

即在app資料夾下的bulid.gradle加入程式碼: jniLibs.srcDir 'libs' ,詳細程式碼如下:

(在bulidTypes {} 結束後新增此段程式碼)

sourceSets{
  main{
       jniLibs.srcDir 'libs'  
       //說明so的路徑為該libs路徑,關聯所有地圖SDK的so檔案
      }
}

接下來在application中新增開發金鑰(AK)

<application>  
    <meta-data  
        android:name="com.baidu.lbsapi.API_KEY"  
        android:value="開發者 key" />  
</application>

新增所需許可權

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
//獲取裝置網路狀態,禁用後無法獲取網路狀態
<uses-permission android:name="android.permission.INTERNET"/> 
//網路許可權,當禁用後,無法進行檢索等相關業務
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
//讀取裝置硬體資訊,統計資料
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" /> 
//讀取系統資訊,包含系統版本等資訊,用作統計
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
//獲取裝置的網路狀態,鑑權所需網路代理
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
//允許sd卡寫許可權,需寫入地圖資料,禁用後無法顯示地圖
<uses-permission android:name="android.permission.WRITE_SETTINGS" /> 
//獲取統計資料
<uses-permission android:name="android.permission.CAMERA" />  
//使用步行AR導航,配置Camera許可權

在MainActivity.java中的程式碼如下

  private MapView mMapView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //初始化地圖SDK,
        //需要在setContentView(R.layout.activity_main);上面
        SDKInitializer.initialize(getApplicationContext());
        setContentView(R.layout.activity_main);
        //獲取地圖控制元件引用
        mMapView = findViewById(R.id.bmapView);
        //自4.3.0起,百度地圖SDK所有介面均支援百度座標和國測局座標,用此方法設定您使用的座標型別. 
        //包括BD09LL和GCJ02兩種座標,預設是BD09LL座標。
        SDKInitializer.setCoordType(CoordType.BD09LL);
    }

    @Override
    protected void onResume() {
        super.onResume();
        mMapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mMapView.onPause();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
        mMapView = null;
    }

注:最好使用真機執行