您现在的位置: 开发 > Flutter插件 > 开发指南 > 定位Flutter插件 > 集成高德定位Flutter插件

集成高德定位Flutter插件 最后更新时间: 2021年11月23日

申请高德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的代码如下

@override
void initState() {
  super.initState();
  AMapFlutterLocation.setApiKey(
    "anroid ApiKey", "ios 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_FINE_LOCATION" /> 
 
<!--允许获取粗略位置,粗略定位必选-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 

<!--允许获取设备和运营商信息,用于问题排查和网络定位(无gps情况下的定位),若需网络定位功能则必选-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />    

<!--允许获取网络状态,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

<!--允许获取wifi网络信息,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

<!--允许获取wifi状态改变,用于网络定位(无gps情况下的定位),若需网络定位功能则必选-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 

<!--后台获取位置信息,若需后台定位则必选-->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> 

<!--用于申请调用A-GPS模块,卫星定位加速-->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 

<!--允许写设备缓存,用于问题排查-->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />  

<!--允许写入扩展存储,用于写入缓存定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

<!--允许读设备等信息,用于问题排查-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

另外Android端还需要配置定位servcie, 在app/android/app/src/main/AndroidManifest.xml添加如下代码配置service

<application ....>
  <!-- 配置定位Service -->
  <service android:name="com.amap.api.location.APSService"/>
</application>

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插件

dependencies:
  amap_flutter_location: ^3.0.0

然后执行flutter pub get 获取高定位Flutter插件

导入定位插件dart类,开始使用定位Flutter插件

import 'package:amap_flutter_location/amap_flutter_location.dart';
import 'package:amap_flutter_location/amap_location_option.dart';
示例
中心
常见
问题
智能
客服