gweii
gweii
  • 发布:2021-02-23 09:39
  • 更新:2021-02-26 18:58
  • 阅读:2028

【报Bug】在微信小程序中缩放地图后不会立即触发regionchange事件,要再拖动一下地图才可以

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS Catalina 10.15.5

HBuilderX类型: 正式

HBuilderX版本号: 3.1.2

第三方开发者工具版本号: 1.05.2102010

基础库版本号: 2.14.3

项目创建方式: HBuilderX

示例代码:
<template>  
    <view>  
        <map id="map1" ref="map1" :controls="controls" scale="18" min-scale="16" max-scale="19"  
            :longitude="currentLocation.longitude" :latitude="currentLocation.latitude"  
            :show-location="showLocation" :show-compass="true"  
            :enable-poi="enablePoi" :enable-zoom="true" :enable-scroll="true"  
            :enable-traffic="false" :markers="markers"  
            :polyline="polyline" :circles="circles" :polygons="polygons" :include-points="includePoints"  
            @regionchange="onRegionChange">  
        </map>  
    </view>  
</template>  

<script>  
    export default {  
        methods: {  
            onRegionChange(e) {  
                console.log(JSON.stringify(e));  
            },  
        }  
    }  
</script>

操作步骤:

参考代码片段

预期结果:

缩放地图后在浏览器的开发者工具的console中立即打印日志

实际结果:

没有立即打印,需要拖动地图后才打印日志

bug描述:

如题

2021-02-23 09:39 负责人:无 分享
已邀请:
gweii

gweii (作者)

用了一个变通的办法来检测缩放等级改变:

<template>    
    <view>    
        <map id="map1" ref="map1" :controls="controls" scale="18" min-scale="16" max-scale="19"    
            :longitude="currentLocation.longitude" :latitude="currentLocation.latitude"    
            :show-location="showLocation" :show-compass="true"    
            :enable-poi="enablePoi" :enable-zoom="true" :enable-scroll="true"    
            :enable-traffic="false" :markers="markers"    
            :polyline="polyline" :circles="circles" :polygons="polygons" :include-points="includePoints">    
        </map>    
    </view>    
</template>    

<script>    
    export default {  
        data() {  
            return {  
                scale: null,  
                intervalId: null  
            }  
        },  
        onShow() {  
            // 定时检测缩放等级是否改变  
            this.intervalId = setInterval(() => {  
                // 以下代码用来获取地图的缩放等级  
                MapUtils.getMapScale().then((res) => {  
                    if (this.scale != res) {  
                        this.scale = res;  
                        // 模拟触发缩放等级改变的事件  
                        this.onScaleChange(res);  
                    }  
                })  
            }, 500);  
        },  
        onHide() {  
            // 停止检测  
            if (this.intervalId) {  
                clearInterval(this.intervalId);  
                this.intervalId = null;  
            }  
        },  
        methods: {  
            onScaleChange(scale) {  
                console.log("Current scale: " + scale);  
            }  
        }    
    }  
</script>

该问题目前已经被锁定, 无法添加新回复