uni-app andorid、ios 集成高德地图 实现锁屏后持续定位

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app andorid、ios 集成高德地图 实现锁屏后持续定位

模块需要配置一个服务器请求地址将持续定位发送到服务器。手机锁屏也能定位,已找到代码。

开发环境 版本号 项目创建方式
8 回复

? 哪里有代码啊


大佬,你倒是把代码贴出来啊

大佬你倒是贴出代码啊

我做过,需要的话请联系我,QQ:1804945430

关键点不是定位,是锁屏会杀app

关键点不是锁屏杀APP,而是安卓锁屏后会把GPS关掉。即便做到了保活,GPS定位是获取不到的,除非再打开屏幕。所以不如直接研究怎么不锁屏。

uni-app 中集成高德地图并实现锁屏后持续定位,你可以参考以下步骤和代码示例。需要注意的是,持续定位功能在 Android 和 iOS 上有不同的处理方式和权限要求。

1. 准备工作

确保你已经在高德开放平台申请并获取了 API Key,并在项目中正确配置了相关依赖。

2. 安装高德地图 SDK

manifest.json 中配置高德地图 SDK。

Android 配置

manifest.jsonapp-plus -> distribute -> sdkConfigs 中添加高德地图配置:

"amap": {
    "version": "latest", // 使用最新版本
    "key": "你的高德地图API Key"
}

iOS 配置

manifest.jsonapp-plus -> distribute -> ios -> plist 中添加定位权限请求:

"NSLocationAlwaysUsageDescription": "应用需要持续定位权限",
"NSLocationWhenInUseUsageDescription": "应用需要在使用时定位权限"

3. 实现持续定位

Android 和 iOS 通用代码

pages/index/index.vue 中实现地图和定位功能:

<template>
  <view>
    <map :longitude="longitude" :latitude="latitude" :markers="markers" style="width: 100%; height: 100%;"></map>
  </view>
</template>

<script>
export default {
  data() {
    return {
      longitude: 0,
      latitude: 0,
      markers: []
    };
  },
  mounted() {
    this.startLocation();
  },
  methods: {
    startLocation() {
      plus.geolocation.getCurrentPosition(
        pos => {
          this.latitude = pos.coords.latitude;
          this.longitude = pos.coords.longitude;
          this.markers = [{
            id: 1,
            latitude: this.latitude,
            longitude: this.longitude,
            title: '当前位置'
          }];
          
          // 持续定位
          plus.geolocation.watchPosition(
            p => {
              this.latitude = p.coords.latitude;
              this.longitude = p.coords.longitude;
              this.markers[0].latitude = this.latitude;
              this.markers[0].longitude = this.longitude;
            },
            err => {
              console.error('定位失败:', err);
            },
            {
              enableHighAccuracy: true,
              timeout: 10000,
              maximumAge: 0
            }
          );
        },
        err => {
          console.error('获取当前位置失败:', err);
        },
        {
          enableHighAccuracy: true,
          timeout: 10000,
          maximumAge: 0
        }
      );
    }
  }
};
</script>

4. 注意事项

  • 权限管理:确保在应用中正确请求并处理用户定位权限。
  • 后台定位:在 iOS 上,需要在 Capabilities 中开启 Background Modes 并勾选 Location updates
  • 电量消耗:持续定位会消耗较多电量,建议在实际应用中合理管理定位功能。

通过上述步骤,你可以在 uni-app 中集成高德地图并实现锁屏后的持续定位功能。

回到顶部