百度地圖開發-引入地圖SDK並配置 02
通過上一篇文章的介紹,基本瞭解百度地圖的基本資訊,接下來就讓我們一起來實際在專案中操作,顯示出地圖。
01 引入地圖SDK
首先需要新建一個空白的Android專案,如下所示(具體新建專案這裡不進行闡述)。
接著在百度地圖的官方網站下載,應用程式需要的地圖SDK。其中需要注意,框選自己應用需要的業務即可。下載介面如下圖所示:
點選左側產品下載就可進入自定義下載介面,目前官網已更新到最新整合模式,如下圖所示。
建議下載:定位SDK下載全量定位,地圖SDK則如何應用中不進行步騎行導航則就按照預設選擇【基礎地圖】【檢索】就OK,在配置模組,開發包格式,記得選擇JAR,AAR是谷歌最新的格式檔案,目前還用不上。按照預設選擇即可。
點選底部的開發包,就成功下載百度地圖SDK開發包,這些包後期需成功引用到Android應用中,否則軟體無法載入並使用百度地圖服務。
也可下載示例程式碼,裡面是官方給的程式碼Demo,可進行參考。
下載後的檔案見下圖,後面需要將其全部引入到應用程式中。
這裡分兩步
- 將解壓後的檔案全部複製到Android專案的libs目錄中。
在app目錄下的build.gradle檔案中android塊中配置sourceSets標籤,如果沒有使用該標籤則新增,詳細配置程式碼如下:
sourceSets {
main {
jniLibs.srcDir 'libs'
}
}
- 在專案中引入libs目錄下的百度地圖jar包。
編譯沒有問題後,則證明引入百度地圖SDK成功。
02 百度地圖常規配置
1、還記得上一期利用keytool生成的金鑰嗎?下來進行金鑰的配置。其實也比較簡單,在AndroidManifest.xml檔案中新加開發者key值,如下圖所示:
點選標紅框的中複製圖示,複製訪問應用金鑰AK,將其按照百度的文件要求,填寫到AndroidManifest.xml檔案中。
<application>
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="開發者 key" />
</application>
在“開發者value”中填寫應用金鑰AK,即可完成金鑰的配置。
要求格式
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zyc.testandroid">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<!--申請金鑰百度生成的key值-->
<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="1NNsn6oRNdM*******MtEMvPNcARRL5" />
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
2、申請百度地圖需要的許可權
由於目前android版本最新到10,而且從8.0之後,申請手機內部都必須詢問,徵得客戶同意才可以進行各種許可權的獲取。
當版本過低時,在AndroidManifest.xml檔案中,加入下面許可權資訊,就可進行許可權的訪問。當版本比較高時,也就是手機比較新讓我看看嗎?
低版本 預設許可
百度地圖許可
<!-- 訪問網路,進行地圖相關業務資料請求,包括地圖資料,路線規劃,POI檢索等 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 獲取網路狀態,根據網路狀態切換進行資料請求網路轉換 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 讀取外接儲存。如果開發者使用了so動態載入功能並且把so檔案放在了外接儲存區域,則需要申請該許可權,否則不需要 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 寫外接儲存。如果開發者使用了離線地圖,並且資料寫在外接儲存區域,則需要申請該許可權 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
百度定位許可
<!-- 這個許可權用於進行網路定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<!-- 這個許可權用於訪問GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<!-- 用於訪問wifi網路資訊,wifi資訊會用於進行網路定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<!-- 獲取運營商資訊,用於支援提供運營商資訊相關的介面-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<!-- 這個許可權用於獲取wifi的獲取許可權,wifi資訊會用來進行網路定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<!-- 寫入擴充套件儲存,向擴充套件卡寫入資料,用於寫入離線定位資料-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<!-- 訪問網路,網路定位需要上網-->
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
高版本 動態申請
// 許可權請求
private void getPermissionMethod() {
List<String> permissionList = new ArrayList<>();
if(ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
permissionList.add(Manifest.permission.ACCESS_FINE_LOCATION);
}
Log.i(TAG, "getPermissionMethod: permissionListSize:"+permissionList.size());
if (!permissionList.isEmpty()){ //許可權列表不是空
String[] permissions = permissionList.toArray(new String[permissionList.size()]);
ActivityCompat.requestPermissions(MainActivity.this,permissions,1);
}else{
Log.i(TAG, "getPermissionMethod: requestLocation !permissionList.isEmpty()裡");
requestLocation();
}
}
執行程式,如果沒有報錯,那麼證明目前的引入SDK,配置相關環境成功。
你真棒,有眼光。
小寄語
人生短暫,我不想去追求自己看不見的,我只想抓住我能看的見的。
原創不易,給個關注。
我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點贊、轉發 謝謝。