uni-app getScale初始无法获取scale数值,得到为0,但是getCenterLocation可以正常获取

uni-app getScale初始无法获取scale数值,得到为0,但是getCenterLocation可以正常获取

操作步骤:

  • getScale初始无法获取scale数值,得到为0,但是getCenterLocation可以正常获取

预期结果:

  • 应该得到实际的scale值,如centerLocation

实际结果:

  • 得到为0

bug描述:

  • getScale初始无法获取scale数值,得到为0,但是getCenterLocation可以正常获取
信息类别 信息内容
产品分类 uniapp/H5
PC开发环境 Windows
PC开发环境版本 win10
HBuilderX类型 正式
HBuilderX版本 3.1.3
浏览器平台 Chrome
浏览器版本 88.0.4324.190
项目创建方式 HBuilderX

Image Image


更多关于uni-app getScale初始无法获取scale数值,得到为0,但是getCenterLocation可以正常获取的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

请提供可稳定复现直接运行的完整示例(上传附件),方便我们快速排查问题哦。 【正确报bug的姿势】https://ask.dcloud.net.cn/article/38139

更多关于uni-app getScale初始无法获取scale数值,得到为0,但是getCenterLocation可以正常获取的实战教程也可以访问 https://www.itying.com/category-93-b0.html


参见下面回复附件代码

参见附件压缩的 map.nvue 可以直接替换 Hello uni-app/pages/API/map/map.nvue 文件复现

这是一个已知的uni-app地图组件初始化问题。getScale在初始时确实可能返回0,而getCenterLocation可以正常获取。

原因分析:

  1. 地图组件的scale值在初始化时可能还未完全加载完成
  2. 这是一个异步问题,scale值需要在地图完全渲染后才能获取

解决方案:

  1. 使用setTimeout延迟获取:
setTimeout(() => {
    this.mapCtx.getScale({
        success: (res) => {
            console.log(res.scale)
        }
    })
}, 500)
  1. 或者监听地图的regionchange事件,在回调中获取:
onRegionChange(e) {
    if(e.type === 'end') {
        this.mapCtx.getScale({
            success: (res) => {
                console.log(res.scale)
            }
        })
    }
}
  1. 也可以在地图的onReady回调中获取:
<map id="myMap" [@ready](/user/ready)="onMapReady"></map>

onMapReady() {
    this.mapCtx = uni.createMapContext('myMap')
    this.mapCtx.getScale({
        success: (res) => {
            console.log(res.scale)
        }
    })
}
回到顶部