新版本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