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 |
更多关于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可以正常获取。
原因分析:
- 地图组件的scale值在初始化时可能还未完全加载完成
- 这是一个异步问题,scale值需要在地图完全渲染后才能获取
解决方案:
- 使用setTimeout延迟获取:
setTimeout(() => {
this.mapCtx.getScale({
success: (res) => {
console.log(res.scale)
}
})
}, 500)
- 或者监听地图的
regionchange
事件,在回调中获取:
onRegionChange(e) {
if(e.type === 'end') {
this.mapCtx.getScale({
success: (res) => {
console.log(res.scale)
}
})
}
}
- 也可以在地图的
onReady
回调中获取:
<map id="myMap" [@ready](/user/ready)="onMapReady"></map>
onMapReady() {
this.mapCtx = uni.createMapContext('myMap')
this.mapCtx.getScale({
success: (res) => {
console.log(res.scale)
}
})
}