react-native-amap-geolocation这款插件接入了高德地图定位模块。支持 Android + iOS,提供尽可能完善的原生接口, 同时提供符合 Web 标准的 Geolocation API。
本文基于 react-native 0.60 以上版本!
获取高德 App Key
为了使用高德 SDK,你需要准备高德 App Key,获取方法参考高德地图 SDK 官方文档:
-
{ "an:key-debug": "keytool -list -v -keystore ./android/app/debug.keystore", "an:key-release": "keytool -v -list -keystore ./android/app/release.keystore" } -
ios 只需要
Bundle Identifier即可
安装
$ yarn add react-native-amap-geolocation
ios 配置
下载和安装高德IOS SDK
- 下载基础SDK(含IDFA)
- 下载定位SDK
- 将下载的
AMapFoundationKit.framework和AMapLocationKit.framework以及 项目自带的ExternalAccessory.framework添加到Build Phases➜Link Binary With Libraries。
配置权限
-
添加以下权限到
Info.plist文件中:<key>NSLocationWhenInUseUsageDescription</key> <string></string> <key>NSLocationAlwaysUsageDescription</key> <string></string> -
ATS设置:
Target➜Info➜App Transport Security Setting展开后的Allow Arbitrary Loads设置为YES
如果要支持后台持续定位,还需要配置以下:
-
打开xcode,点击项目
-
选择
Signing&Capabilities,把Background Modes打开为ON,然后打勾Location updates
Android
react-native 为 0.6x 的话,yarn add react-native-amap-geolocation 就完事了,一步到位不需要过多配置。
基本用法
import { PermissionsAndroid } from "react-native";
import { init, Geolocation } from "react-native-amap-geolocation";
// 对于 Android 需要自行根据需要申请权限
await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION);
// 使用自己申请的高德 App Key 进行初始化
await init({
ios: "9bd6c82e77583020a73ef1af59d0c759",
android: "043b24fe18785f33c491705ffe5b6935"
});
Geolocation.getCurrentPosition(({ coords }) => {
console.log(coords);
});
更多用法
该项目除了提供符合 Web 标准的 Geolocation API,同时为了最大程度的发挥高德定位 SDK 的功能, 会尽可能提供与原生 SDK 一致的接口封装。由于 iOS 和 Android SDK 提供的接口并不一致, 于是最终实现的接口大部分是并不通用的。这在接口文档或文档注释有注明, 比如 @platform android 表示该接口仅用于 Android。
以下是一些常用接口的用法说明以及示例代码,更多接口的具体用法请参考接口文档。
直接使用原生接口
import { init, addLocationListener, start, stop } from "react-native-amap-geolocation";
// 添加定位监听函数
addLocationListener(location => console.log(location));
// 开始连续定位
start();
// 在不需要的时候停止定位
stop();
逆地理编码
Android 默认返回逆地理编码,而 iOS 需要手动设置。
import { setLocatingWithReGeocode, setNeedAddress } from "react-native-amap-geolocation";
// android
setNeedAddress(true);
// ios
setLocatingWithReGeocode(true);
定位回调频率限制
import { setInterval, setDistanceFilter } from "react-native-amap-geolocation";
// android,5 秒请求一次定位
setInterval(5000);
// ios,设备移动超过 10 米才会更新位置信息
setDistanceFilter(10);
参考
- 高德地图API
- react-native-amap-geolocation安装与使用
- react-native-amap-geolocation 使用指南
- [react-native-amap-geolocation 接口文档
联系作者
| 作者微信 | 知识星球 | 赞赏作者 |
|---|---|---|
![]() |
![]() |
![]() |


