Flutter 中集成高德定位获取地理位置
Android 配置
高德定位准备工作获取 key
- 申请成为开发者
- 创建应用配置获取 Key 申请教程地址:https://lbs.amap.com/api/android-sdk/guide/create-project/get-key
生成 SHA1 值
官方文档:https://lbs.amap.com/faq/android/map-sdk/create-project/43112 通过命令行生成,mac 上执行生成的 java 环境
brew install openjdk@17
安装完成后执行,配置环境变量
vim ~/.zshrc
增加环境变量
export JAVA_HOME=/opt/homebrew/opt/openjdk@17
export PATH=$JAVA_HOME/bin:$PATH
让环境变量生效
source ~/.zshrc
在项目根目录下创建 keystore 文件
keytool -genkey -v -keystore android/app/my-release-key.jks -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
生成 SHA1 值
keytool -list -v -keystore android/app/my-release-key.jks -alias my-key-alias
查看 SHA1
keytool -list -v -keystore android/app/my-release-key.jks
配置高德 app 应用
得到相应的 key
查看 Android 端 PackageName 和配置 keyStore
Android 端的 PackageName 可以直接在 Flutter 工程目录下 android/app/src/main/AndroidManifest.xml 里查看。
KeyStore 可以在 Flutter 工程目录下 android/app/build.gradle 中配置。
IOS 获取 key
安全码 Bundle ID
Bundle Identifier 后面的值
高德定位配置
官方文档:https://developer.amap.com/api/flutter/gettingstarted pub 地址:https://pub.dev/packages/amap_flutter_location
安装
dependencies:
amap_flutter_location: ^3.0.0
amap_flutter_map: ^3.0.0
amap_flutter_base: ^3.0.0
permission_handler: ^12.0.1
import 'package:amap_flutter_location/amap_flutter_location.dart';
配置 jks
在 android/app/src/build.gradle.kts
signingConfigs {
release {//发布版本的签名配置
storeFile file('my-release-key.jks')
keyAlias "my-key-alias"
storePassword "123456"
keyPassword "123456"
}
debug {//调试版本的签名配置
storeFile file('my-release-key.jks')
keyAlias "my-key-alias"
storePassword "123456"
keyPassword "123456"
}
}
配置权限
<!--访问网络-->
<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" />
增加编译依赖
在 android/app/src/build.gradle.kts 的 android 后面加上
dependencies {
// 高德定位 SDK
implementation("com.amap.api:location:5.2.0")
// Kotlin 标准库
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7")
}
配置定位 Service
<application
......
<!-- 配置定位Service -->
<service android:name="com.amap.api.location.APSService"/>
......
</application>