sailven 2025-03-10 17:27 采纳率: 33.3%
浏览 23

uniapp获取海拔,时而有效时而失效

想要获取海拔高度,但是大部分时候获取到的altitude是0,偶尔又能返回正确的海拔(绝大多数时候是在进入页面时获取到海拔,我把获取位置放到了组件的mounted里)
代码如下:

uni.getLocation({
        type: 'gcj02',
        geocode: true,
        altitude: true,
        isHighAccuracy: true,
        timeout: 50000,
        highAccuracyExpireTime: 100000,
        success: (res) => {
          console.log("mounted res",res)
          this.longitude = res.longitude;
          this.latitude = res.latitude;
          this.altitude = res.altitude;
          if(res.address){
            this.address = res.address.province + 
            res.address.city + 
            res.address.district + 
            res.address.street + 
            res.address.streetNum + 
            res.address.poiName;
          }
        },
        fail: (err) => {
          console.log("fail1",err)
        }
      })  
  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-03-10 17:27
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    uni-app获取海拔,时而有效时而失效

    你遇到了一个常见的问题:获取海拔高度时,结果时而有效时而失效。这个问题的原因可能是由于设备的权限问题或网络问题。

    首先,需要检查设备的权限是否已经开启了位置服务。可以在 app.json 文件中添加以下配置:

    {
      "permission": {
        "android": {
          "SYSTEM_ALERT_WINDOW": true,
          "ACCESS_FINE_LOCATION": true,
          "ACCESS_COARSE_LOCATION": true
        },
        "ios": {
          "NSLocationWhenInUseUsageDescription": "需要访问您的位置信息",
          "NSLocationAlwaysUsageDescription": "需要访问您的位置信息"
        }
      }
    }
    

    然后,在获取海拔高度时,可以使用 uni.getLocation() 方法获取当前的位置,并使用 uni.getAltitude() 方法获取海拔高度。可以在 mounted 生命周期中获取海拔高度:

    mounted() {
      uni.getLocation({
        type: 'gcj02',
        success: (res) => {
          const latitude = res.latitude;
          const longitude = res.longitude;
          uni.getAltitude({
            latitude,
            longitude,
            success: (res) => {
              const altitude = res.altitude;
              console.log(`海拔高度:${altitude}`);
            }
          });
        }
      });
    }
    

    如果你已经在 mounted 生命周期中获取海拔高度,但是仍然出现时而有效时而失效的问题,可以尝试使用 uni.onLocationChange() 方法来监听位置变化,并在位置变化时获取海拔高度:

    uni.onLocationChange((res) => {
      const latitude = res.latitude;
      const longitude = res.longitude;
      uni.getAltitude({
        latitude,
        longitude,
        success: (res) => {
          const altitude = res.altitude;
          console.log(`海拔高度:${altitude}`);
        }
      });
    });
    

    这些解决方案可以帮助你解决获取海拔高度时的时而有效时而失效问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月10日