百度地圖開發-引入地圖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,配置相關環境成功。
你真棒,有眼光。
小寄語
人生短暫,我不想去追求自己看不見的,我只想抓住我能看的見的。
原創不易,給個關注。
我是阿輝,感謝您的閱讀,如果對你有幫助,麻煩點贊、轉發 謝謝。