新版本flutter(3.32.7) android 端集成百度地圖sdk
因為官方文檔有很多地方沒有說清楚,導致在適配過程中踩了很多坑,本文檔基于已經實現集成的flutter安卓端應用編寫。
官方文檔地址:https://lbs.baidu.com/faq/api?title=flutter/loc/create-project/configure
Flutter是谷歌的移動UI框架,可以快速在iOS和Android上構建高質量的原生用戶界面,因其毫秒級熱重載能夠實現快速開發、具備超強原生性能以及富有表現力和靈活的UI,越來越受開發者喜愛,因此推出百度定位Flutter插件供廣大開發者在開發Flutter Application的時候,可以集成本插件實現基本定位需求。
集成后地圖長這樣:
第一步:打開/創建一個flutter application工程
根據開發者的實際使用情況,打開一個已有的flutter application工程,或新建一個flutter application工程。 這里不再贅述。
第二步申請Android端AK
在百度地圖開放平臺控制臺應用管理中創建Android端AK
如果之前沒有認證過需要先登錄,再認證開發者。
地址:https://lbs.baidu.com/apiconsole/key
創建這個需要兩個東西,一個是packageName,在這獲取:
另一個是 SHA1碼,網上自行查找獲取方法。
創建完后長這樣:
第三步:添加依賴
pubspec.yaml
文件添加flutter依賴
# 百度地圖flutter_baidu_mapapi_base: ^3.9.5flutter_baidu_mapapi_map: ^3.9.5flutter_baidu_mapapi_utils: ^3.9.5flutter_baidu_mapapi_search: ^3.9.5permission_handler: ^12.0.1 # 動態申請權限插件geolocator: ^14.0.2 # 獲取當前定位插件
百度地圖使用只需要前四個即可,后面是我定位還有獲取權限使用。不需要的可以不加
dart run pub get
下載依賴
第四步:新建 MyApplication.kt
文件
在 MainActivity
同級目錄下創建 MyApplication.kt
文件,內容如下:
package xxx // 這個package要和 MainActivity 里面的一致import com.baidu.mapapi.base.BmfMapApplicationclass MyApplication : BmfMapApplication() {override fun onCreate() {super.onCreate()}
}
創建好了長這樣:
第五步:調整 android AndroidManifest.xml
文件
調整 android/app/src/main/AndroidManifest.xml
文件,調整如下:
1、在 manifest
子節點新增如下內容,用于sdk的權限聲明
<!-- 用于訪問wifi網絡信息,wifi信息會用于進行網絡定位 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><!-- 獲取網絡狀態,根據網絡狀態切換進行數據請求網絡轉換 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><!-- 寫外置存儲。如果開發者使用了離線地圖,并且數據寫在外置存儲區域,則需要申請該權限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 讀取外置存儲。如果開發者使用了so動態加載功能并且把so文件放在了外置存儲區域,則需要申請該權限,否則不需要 --><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /><!-- 訪問網絡,進行地圖相關業務數據請求,包括地圖數據,路線規劃,POI檢索等 --><uses-permission android:name="android.permission.INTERNET" /><!-- 定位權限 --><uses-permission android:name