集成高德地图Flutter插件 最后更新时间: 2021年11月23日
集成高德地图Flutter插件
申请高德ApiKey
使用高德 SDK 需要您在官网控制台获取Key。如果您第一次使用,可以按照获取Key指南注册生成高德 Key。
在Native端配置高德地图SDK
原生SDK配置请参考高德开放平台地图SDK配置说明:
Android平台请参考Android Studio配置工程。
iOS平台请参考iOS地图SDK自动部署。
注意:官网中的配置是以新建工程为基准进行的说明,新建Flutter工程或者使用已有的Flutter工程时其中已经包含了原生的Andorid和iOS工程,所以可直接略过新建工程步骤 。
设置合规隐私接口
由于个人信息保护法的实施,从地图Flutter插件3.0.0开始增加了更新隐私合合规属性,请正确设置相关属性,否则会造成地图白屏等问题。
///建议在APP首次启动或者进行弹窗进行隐私声明时,根据用户设置
///
/// [hasContains] 隐私权政策是否包含高德开平隐私权政策
///
///[hasShow] 隐私权政策是否弹窗展示告知用户
///
///[hasAgree] 隐私权政策是否已经取得用户同意
static const AMapPrivacyStatement amapPrivacyStatement =
AMapPrivacyStatement(hasContains: true, hasShow: true, hasAgree: true);
///在创建地图时设置privacyStatement属性
final AMapWidget map = AMapWidget(
///必须正确设置的合规隐私声明,否则SDK不会工作,会造成地图白屏等问题。
privacyStatement: ConstConfig.amapPrivacyStatement,
);
添加高德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
- 第二种为直接通过AMapWidget属性添加。
注意:通过AMapWidget属性添加的优先级高于通过Native配置,如果通过AMapWidget属性的方式添加了,native端的配置会失效。请根据实际使用情况自行选择。
高德key是AMapWidget的一个可选属性,如果要直接通过AMapWidget属性的方式添加可以参考一下代码。
引入高德地图Flutter插件
- 在Flutter工程的pubspec.yaml里的dependencies添加如下代码引入高德地图Flutter插件
2. 执行flutter pub get 获取高德地图Flutter插件。
3. 配置高德地图SDK包,使用时请参考官网关于集成Android地图SDK和iOS地图SDK说明配置地图SDK。
- Android端:https://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project
- iOS端:https://lbs.amap.com/api/ios-sdk/guide/create-project/cocoapods
4. 在需要使用高德地图的dart文件中导入地图Flutter插件。
iOS工程配置
- Flutter 1.22.0 之前(之后的版本可以不添加该配置),iOS端的UiKitView还只是preview状态, 默认是不支持的, 需要手动打开开关, 需要在iOS工程的info.plist添加如下配置:
2. 如果使用地图内置的定位功能,根据业务需要,在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
主要接口说明
AMapWidget属性说明
AMapWidget提供的可选属性如下:
分类 | 属性key | 含义 | 默认值 |
---|---|---|---|
高德key | apiKey | 高德key | null |
样式配置 | nitialCameraPosition | 初始化时地图中心点不能为null | CameraPosition(target: LatLng(39.909187, 116.397451), zoom: 10) |
mapType | 地图样式 可选值: 普通地图 卫星地图 夜间视图 导航视图 公交视图 | 普通地图 | |
limitBounds | 地图显示区域 | null | |
minMaxZoomPreference | 最小、最大缩放范围 | null | |
customStyleOptions | 自定义样式配置 | ||
myLocationStyleOptions | 定位小蓝点配置 | ||
开关项 | buildingsEnabled | 是否显示3D建筑物 | true |
compassEnabled | 是否指南针 | false | |
scaleEnabled | 比例尺是否显示 | true | |
trafficEnabled | 是否显示路况图层 | false | |
labelsEnabled | 是否显示底图文字 | true | |
rotateGesturesEnabled | 旋转手势 | true | |
scrollGesturesEnabled | 滑动手势 | true | |
tiltGesturesEnabled | 仰角手势 | true | |
zoomGesturesEnabled | 缩放手势 | true | |
touchPoiEnabled | 是否允许poi点击 | true | |
回调、交互 | onMapCreated | 地图创建完成回调成功后会返回AMapController对象 | null |
onCameraMove | 地图移动回调 | ||
onCameraMoveEnd | 地图移动结束回调 | ||
onLocationChanged | 位置变化回调 | ||
onTap | 点击地图回调 | ||
onLongPress | 长按回调 | ||
onPoiTouched | poi点击回调 | ||
初始覆盖物 | markers | 初始化时需要添加的Marker集合 | |
polylines | 初始化是需要添加的Polyline集合 | ||
polygons | 初始化是需要添加的Polygon集合 |
AMapController方法说明
当AMapWidget创建完成后,可以通过onMapCreated回调获取到AMapController对象,AMapController对象提供的操作地图的方法如下:
方法名 | 说明 |
---|---|
Future<void> moveCamera(CameraUpdate cameraUpdate, {bool animated, int duration}) | 移镜头地图视角 通过[CameraUpdate]对象设置新的中心点、缩放比例、放大缩小、显示区域等内容 可选属性[animated]用于控制是否执行动画移动 可选属性[duration]用于控制执行动画的时长 |
Future<void> setRenderFps(int fps) | 设置地图每秒渲染的帧数 |
Future<Uint8List> takeSnapshot() | 地图截屏 |
Future<String> getMapContentApprovalNumber() | 获取地图审图号(普通地图) 任何使用高德地图API调用地图服务的应用必须在其应用中对外透出审图号 如高德地图在"关于"中体现 |
Future<String> getSatelliteImageApprovalNumber() | 获取地图审图号(卫星地图) 任何使用高德地图API调用地图服务的应用必须在其应用中对外透出审图号 如高德地图在"关于"中体现 |
Future<void> clearDisk() | 清空缓存 |