开发 Flutter插件 开发指南 地图Flutter插件 集成高德地图Flutter插件

集成高德地图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端直接添加
  1. 通过Native端添加与直接使用Native SDK的方式一致,请参考高德开放平台官网说明。
  2. Android端:http://lbs.amap.com/api/android-sdk/guide/create-project/dev-attention
  3. iOS端:http://lbs.amap.com/api/ios-sdk/guide/create-project/note
  • 第二种为直接通过AMapWidget属性添加。 

注意:通过AMapWidget属性添加的优先级高于通过Native配置,如果通过AMapWidget属性的方式添加了,native端的配置会失效。请根据实际使用情况自行选择。

高德key是AMapWidget的一个可选属性,如果要直接通过AMapWidget属性的方式添加可以参考一下代码。

///先将申请的Android端可以和iOS端key设置给AMapApiKey
static const AMapApiKey amapApiKeys = AMapApiKey(
      androidKey: '您申请的Android端key',
      iosKey: '您申请的iOS端key');

///在创建地图时设置apiKey属性
AMapWidget map = AMapWidget(
  		///配置apiKey,设置为null或者不设置则优先使用native端配置的key
      apiKey: amapApiKeys,
    );

引入高德地图Flutter插件

  1. 在Flutter工程的pubspec.yaml里的dependencies添加如下代码引入高德地图Flutter插件
dependencies:
  amap_flutter_map: ^3.0.0

 2. 执行flutter pub get 获取高德地图Flutter插件。  

 3. 配置高德地图SDK包,使用时请参考官网关于集成Android地图SDK和iOS地图SDK说明配置地图SDK。

 4. 在需要使用高德地图的dart文件中导入地图Flutter插件。 

import 'package:amap_flutter_map/amap_flutter_map.dart';

iOS工程配置

  1. Flutter 1.22.0 之前(之后的版本可以不添加该配置),iOS端的UiKitView还只是preview状态, 默认是不支持的, 需要手动打开开关, 需要在iOS工程的info.plist添加如下配置: 
<key>io.flutter.embedded_views_preview</key>
<string>YES</string>

 2. 如果使用地图内置的定位功能,根据业务需要,在info.plist文件中,配置相应的定位权限,详细可参考:http://lbs.amap.com/api/ios-location-sdk/guide/create-project/manual-configuration.如果需要后台定位功能,需要额外操作配置,详细可参考:http://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() 

清空缓存

返回顶部 示例中心 常见问题 智能客服 公众号
二维码