高德 开发 Flutter插件 开发指南 定位Flutter插件 集成高德定位Flutter插件
更新时间:2021年01月05日
申请高德ApiKey
使用高德 SDK 需要您在官网控制台获取Key。
如果您第一次使用,可以按照获取 Key 指南注册生成高德 Key。
在Native端配置高德定位SDK
原生SDK配置请参考高德开放平台定位SDK配置说明
Android平台请参考Android Studio配置工程
iOS平台请参考iOS地图SDK自动部署
注意:官网中的配置是以新建工程为基准进行的说明,新建Flutter工程或者使用已有的Flutter工程时其中已经包含了原生的Andorid和iOS工程,所以可直接略过新建工程步骤
添加高德ApiKey
定位flutter插件提供两种方式添加高德key:
- 第一种为Native端直接添加
通过Native端添加与直接使用Native SDK的方式一致,请参考高德开放平台官网说明。
Android端:https://lbs.amap.com/api/android-sdk/guide/create-project/dev-attention
iOS端:https://lbs.amap.com/api/ios-sdk/guide/create-project/note
- 第二种为通过AMapFlutterLocation.setApikey接口设置。
注意:通过AMapFlutterLocation.setApikey接口设置可以的优先级高于通过Native配置,如果通过AMapFlutterLocation.setApikey接口设置了,native端的配置会失效。请根据实际使用情况自行选择。
通过AMapFlutterLocation设置apiKey的代码如下
声明定位权限和Service
定位权限需要现在Android和iOS工程中声明才可以申请,否则无法申请权限
Android端
在flutter工程的app/android/app/src/main/AndroidManifest.xml里声明如下权限
<!--访问网络-->
<uses-permission android:name="android.permission.INTERNET" />
<!--粗略定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!--精确定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!--申请调用A-GPS模块-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!--用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--用于写入缓存数据到扩展存储卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
另外Android端还需要配置定位servcie, 在app/android/app/src/main/AndroidManifest.xml添加如下代码配置service
iOS端
根据业务需要,在info.plist文件中,配置相应的定位权限,详细可参考:https://lbs.amap.com/api/ios-location-sdk/guide/create-project/manual-configuration
如果需要后台定位功能,需要额外操作配置,详细可参考:https://lbs.amap.com/api/ios-location-sdk/guide/get-location/backgroundlocation
引入高德定位Flutter插件
在Flutter工程的pubspec.yaml里的dependencies添加如下代码引入高德定位Flutter插件
然后执行flutter pub get 获取高定位Flutter插件