flutter集成高德地图获取位置
准备工作
在创建安卓应用获取SHA1 获取当前位置
添加依赖文件配置
build.gradle文件配置AndroidManifest.xml配置 获取定位 准备工作
高德开放平台地址https://lbs.amap.com/tools/picker
在创建安卓应用 在控制台我的应用中创建应用
点击添加
由上图可以看出我们还需要获取安全码SHA1才能添加
添加方法高德官方也已经给出
https://lbs.amap.com/faq/android/map-sdk/create-project/43112 获取SHA1
这里我们采用的是使用 keytool(jdk自带工具)获取SHA1
在控制台输入cd .android定位到.android目录下继续在控制台输入命令:调试版本使用 debug.keystore,命令为:keytool -list -v -keystore debug.keystore 发布版本使用 apk 对应的 keystore,命令为:keytool -list -v -keystore apk的keystore按照要求输入密钥库口令,注意这里输入后是没有显示的
选择sha1复制即可(注意调试版安全码和发布版安全码我们可以都写成一样的)
准备工作完成后创建的应用如图
获取当前位置 添加依赖
高德定位Flutter插件地址https://pub.dev/packages/amap_flutter_location
添加依赖
dependencies: amap_flutter_location: ^3.0.0
导包
import 'package:amap_flutter_location/amap_flutter_location.dart';
权限检测插件地址https://pub.dev/packages/permission_handler
添加依赖
dependencies: permission_handler: ^8.3.0
导包
import 'package:permission_handler/permission_handler.dart';
文件配置
高德官方给出一定的指引https://developer.amap.com/api/flutter/gettingstarted
build.gradle文件配置
修改你的android/app/build.gradle文件配置签名文件以及配置 implementation
signingConfigs { release { //发布版本的签名配置 //还要先将我们使用的androidkeystore.jks'导入到flutter_apponeandroid下 storeFile file('androidkeystore.jks') keyAlias "key0" storePassword "20010101" keyPassword "20010101" } debug { //调试版本的签名配置 storeFile file('androidkeystore.jks') keyAlias "key0" storePassword "20010101" keyPassword "20010101" } } buildTypes { release { // TODO: Add your own signing config for the release build. // Signing with the debug keys for now, so `flutter run --release` works. signingConfig signingConfigs.release } debug { // TODO: Add your own signing config for the release build、 // Signing with the debug keys for now, so `flutter run --release` works、 signingConfig signingConfigs.debug } }
使用高德SDK之前配置可以参考高德官方文档https://developer.amap.com/api/android-location-sdk/guide/create-project/android-studio-create-project
dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation "com.amap.api:location:latest.integration"}
AndroidManifest.xml配置
android/app/src/main/AndroidManifest.xml下的配置
主要用于配置高德Key和申请权限:
在AndroidManifest.xml的application标签中配置Key:
application标签中配置Key
application标签中声明service组件
在AndroidManifest.xml中配置权限:
获取定位
import 'package:flutter/material.dart';import 'dart:async';// import 'dart:io';import 'package:amap_flutter_location/amap_flutter_location.dart';import 'package:amap_flutter_location/amap_location_option.dart';import 'package:permission_handler/permission_handler.dart';class LocationPage extends StatefulWidget { LocationPage({Key? key}) : super(key: key); _LocationPageState createState() => _LocationPageState();}class _LocationPageState extends State { //获取数据 // Map _locationResult; String _latitude = ""; //纬度 String _longitude = ""; //经度 //监听定位 late StreamSubscription