Flutter 使用高德地图定位

901 阅读1分钟

目标

本文主要是记录一些依赖配置(也因这意外的折磨人,所以才由此文),最终将正确运行 官方示例

首先创建基本项目 flutter_map

使用 Android Studio/Visual Studio Code 创建:

流程就不记述了,默认得到初始的计数器程序。

运行命令添加依赖(或者直接编辑 yaml 文件)。

flutter pub add amap_flutter_location flutter pub add permission_handler

第一个是高德地图的定位插件,第二个是官方实例的一个依赖。

官方示例 复制到 main.dart

依据文档对于 Android ,需要编辑 AndroidManifest.xml 文件获取所需权限。

2021-08-03_16-56.png

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.flutter_map">
  <!--访问网络-->
  <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" />

还需要:

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

最坑的地方来了,官方文档并没有提到:

编辑 build.gradle 添加依赖:

2021-08-03_17-00.png

文本如下:

dependencies {
    implementation 'com.amap.api:location:latest.integration'
}

此时我们便可以运行项目查看结果了,但由于还未配置 Key 将得不到正确的结果。

申请 Key

申请 Key 的方法 官方文档 已经十分详细。

得到后将 Key 替换即可:

2021-08-03_17-08.png

运行结果如下(模拟器环境,实机将得到详细地址):

2021-08-03_17-15.png