更新记录

1.0.0(2025-10-16)

  • 新版发布

平台兼容性

uni-app(4.65)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
× ×
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟
× × × × × × × × × × ×

uni-app x(4.65)

Chrome Safari Android iOS 鸿蒙 微信小程序
× × ×

高德定位、连续定位、后台定位、保活定位

开发文档

UTS 语法 UTS API插件 UTS uni-app兼容模式组件 UTS 标准模式组件 Hello UTS

特别提醒

  • 购买本插件前,请先试用、并充分自测后再购买,购买后无法退款;
  • 如有使用上的疑问、bug,可以进交流群联系作者;
  • 结合文档和示例代码集成使用;
  • 试用必须先打基座、试用必须先打基座、试用必须先打基座重要事情说三遍;
  • 本插件支持uniapp/uniapp-x项目,支持vue2/vue3,支持iOS、Android、HarmonyOS
  • Android手机型号太多,各品牌对手机的限制不尽相同,需要保活而进行的设置也不一样。随着Android系统的更新迭代,保活的难度也在不断加大。最有效的保活方式还是联系厂家添加白名单以实现进程保活。
  • uniapp使用本插件保活、后台定位功能iOS需在manifest.json/其他设置中后台运行能力配置location
  • android uniapp使用需设置targetSdkVersion >=29(在manifest.json->安卓/iOS常用其他设置)
  • iOS/Android需更换appKey,更换位置见下面集成步骤

插件功能介绍

  1. 定位、连续定位、后台定位(Android需要使用保活定位)
  2. 保活定位
  3. HarmonyOS仅支持单次定位、连续定位,暂不支持后台定位、保活定位

Android后台采集或保活设置

  1. 通知管理允许通知,允许自启动;

  2. 耗电保护允许后台运行;

  3. 电池设置中关闭智能耗电保护、省电模式、应用速冻等。

集成插件步骤

  1. 点击试用/购买选择需要集成项目
  2. 调用插件在需要使用的地方导入 import * as GDLocation from '../../uni_modules/yt-amaplocation' 可参考下面的实例代码
  3. Android配置高德key,事先先申请的key,替换:uni_modules/ly-amaplocation/utssdk/app-android/AndroidManifest.xml文件下<meta-data android:name="com.amap.api.v2.apikey" android:value="自己的key" />。
  4. iOS配置高德key替换:uni_modules/ly-amaplocation/utssdk/app-ios/info.plist中GDAPIKey
  5. 配置完打自定义基座测试

api说明

HarmonyOS需先初始化定位SDK:

//参数为高德开发平台申请的AppKey
GDLocation.initAmapLocal("e982b69*****1779ddd80ee52")

单次定位:GDLocation.onceLocation(options:LocationOptions,locationHandler(location=>{}))

GDLocation.onceLocation({
    locationMode: 'HundredMeters',
    reGeocode: true,
    locationHandler: (location) => {
        if (location.code == 200) {
            console.log(location)
        }
    }
} as GDLocation.LocationOptions)

连续定位:GDLocation.updateLocation(options:LocationOptions,locationHandler(location=>{}))

GDLocation.updateLocation({
        locationMode: 'HundredMeters',
        anLocationMode: "Hight_Accuracy",
        reGeocode: true,
        isAllow: true,
        locationInterval: 10000,
        locationHandler: (location) => {
            if (location.code == 200) {
                console.log(location)
            }
        }
    } as GDLocation.LocationOptions)
    ///停止连续定位
GDLocation.stopUpdateLocation()

保活定位:GDLocation.keepLive(options:LocationOptions,locationHandler(location=>{}))

GDLocation.keepLive({
                    locationMode: 'HundredMeters',
                    reGeocode: true,
                    isAllow: true,
                    locationInterval: 5000,
                    anLocationMode: "Battery_Saving",
                    locationHandler: (location) => {
                        if (location.code == 200) {
                            console.log(location)
                        }
                    }
} as GDLocation.LocationOptions)

///停止保活定位
GDLocation.stopKeepLive();

打开App对应设置页面

GDLocation.openAppSettings()

参数说明:LocationOptions 定位参数

参数 类型 说明
locationMode String iOS端定位精度'BestForNavigation' 、 'AccuracyBest' 、 'NearestTenMeters' 、 'HundredMeters'、'Kilometer'
anLocationMode String android端定位精度 Hight_Accuracy 、 Battery_Saving 、Device_Sensors
reGeocode bool 是否需要地址默认true
locationInterval int 连续定位间隔,单位毫秒默认10*1000
maxAccuracy number HarmonyOS设置期望的最大定位精度(单位为米),数值越小表示要求的精度越高 -- 高德定位 SDK 是基于鸿蒙系统定位能力封装的,最终的定位精度还受设备硬件、环境(如 GPS 信号强度)等因素影响,默认5米
isAllow bool 是否后台定位仅连续定位有效,保活定位默认开启后台定位
notificationTitle string 仅Android有效设置后台定位通知标题
notificationContentText string 仅Android有效设置后台定位通知内容
locationHandler function 定位回调

locationMode:补充说明,iOS端定位精度设置BestForNavigation:导航级精度,±1米内

参数 说明
BestForNavigation 导航级精度,±1米内
AccuracyBest 设备支持的最佳精度,±10米内
NearestTenMeters ±10米 默认
HundredMeters ±100米
Kilometer ±1公里

anLocationMode:Android端定位精度

参数 说明
Hight_Accuracy 高精度模式
Battery_Saving 低功耗模式
Device_Sensors 仅设备模式,不支持室内环境的定位

定位回调说明

定位回调返回的数据类型location:LocationInfo。

字段 类型 说明
code int 状态码 200成功
mes string 定位说明
latitude number 纬度
longitude number 经度
speed number 速度
altitude number 海拔
address AddressInfo 地址信息,详情见下表

AddressInfo说明:

字段 类型 说明
formattedAddress string 格式化地址
country string 国家
province string 省/直辖市
city string
district string
citycode string 城市编码
adcode string 区域编码
street string 街道名称
number string 门牌号
poiName string 兴趣点名称
aoiName string 所属兴趣点名称

uniapp-x完整示例,uniapp项目的示例demo可点击右侧导入示例项目

<template>
    <view>
        <view class="text-area">
            <text class="title" @click="oneceLocationAction">单次定位</text>
            <text class="title" @click="updateLocation">连续定位</text>
            <text class="title" @click="keepLive">保活定位</text>
            <text class="title" @click="stopUpdateLocation">取消连续定位</text>
            <text class="title" @click="stopKeepLive">取消保活定位</text>
            <text class="title" @click="openAppSettings">打开设置页面</text>
        </view>
    </view>
</template>

<script>
    import * as GDLocation from '../../uni_modules/yt-amaplocation'
    export default {
        data() {
            return {
                title: 'Hello'
            }
        },
        onLoad() {
            // #ifdef APP-HARMONY
            //获取应用appid用于申请高德定位、地图的appkey
            let appId = GDLocation.getHarmonyOSAppID()
            console.log(`appId:${appId}`)
            GDLocation.initAmapLocal("高德开放平台申请的appkey")
            // #endif
        },
        methods: {
            oneceLocationAction() {
                GDLocation.onceLocation({
                    locationMode: 'HundredMeters',
                    reGeocode: true,
                    maxAccuracy: 5,
                    anLocationMode: "Hight_Accuracy",
                    locationHandler: (location) => {
                        if (location.code == 200) {
                            console.log(location)
                        }
                    }
                } as GDLocation.LocationOptions)
            },
            //连续定位
            updateLocation() {
                GDLocation.updateLocation({
                    locationMode: 'HundredMeters',
                    anLocationMode: "Hight_Accuracy",
                    maxAccuracy: 5,
                    reGeocode: true,
                    isAllow: true,
                    locationInterval: 10000,
                    locationHandler: (location) => {
                        if (location.code == 200) {
                            console.log(location)
                        }
                    }
                } as GDLocation.LocationOptions)
            },
            //后台保活定位
            keepLive() {
                GDLocation.keepLive({
                    locationMode: 'HundredMeters',
                    reGeocode: true,
                    isAllow: true,
                    locationInterval: 5000,
                    maxAccuracy: 5,
                    anLocationMode: "Battery_Saving",
                    locationHandler: (location) => {
                        if (location.code == 200) {
                            console.log(location)
                        }
                    }
                } as GDLocation.LocationOptions)
            },
            //取消连续定位
            stopUpdateLocation() {
                GDLocation.stopUpdateLocation()
            },
            //停止保活
            stopKeepLive() {
                GDLocation.stopKeepLive()
            },
            //跳设置页面
            openAppSettings() {
                GDLocation.openAppSettings()
            },
        }
    }
</script>

<style>
    .title {
        font-size: 18px;
        color: #8f8f94;
        text-align: center;
        margin-top: 45rpx;
    }

    .text-area {
        display: flex;
        flex-direction: column;
        align-items: center;
        width: 750rpx;
    }
</style>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

位置权限,后台定位权限

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件会采集用户位置信息,插件使用高德地图定位SDK,参考其官方网站https://lbs.amap.com 和个人信息保护声明 https://lbs.amap.com/api/compliance-center/ability/data-security

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率: