码码儿
码码儿
  • 发布:2023-06-26 01:43
  • 更新:2023-06-27 19:31
  • 阅读:197

【报Bug】字节小程序map刷新makers安卓端bug

分类:uni-app

产品分类: uniapp/小程序/字节跳动

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: WIN10

HBuilderX类型: 正式

HBuilderX版本号: 3.7.3

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

基础库版本号: 2.87.0.9

项目创建方式: HBuilderX

示例代码:
<map class="mapStyle" id="map" :latitude="latitude" :scale="scale" :min-scale="minScale" :max-scale="maxScale" :enable-satellite="enableSatellite"  
                :longitude="longitude" @regionchange="getCenterMap" :markers="markers" @markertap="markertap" @callouttap="markertap" show-location="true">  
            </map>
// maker展示  
            showMakers() {  
                for (var i=0;i<this.list.length;i++) {  
                    // aes解密坐标  
                    var deLng = CryptoJS.Decrypt(this.list[i].lng);  
                    var deLat = CryptoJS.Decrypt(this.list[i].lat);  

                    var color = '';  
                    var borderColor = '';  
                    var bgColor = '';  
                    var iconPath = '';  
                    var calloutContent = '';  
                                        calloutContent = this.list[i].positionName;  

                    var marker = {  
                        id: this.list[i].positionId,  
                        longitude: parseFloat(deLng),  
                        latitude: parseFloat(deLat),  
                        iconPath: iconPath,  
                        width: 15,  
                        height: 15,  
                        ifBuy: this.list[i].ifBuy,  
                        callout: {  
                            content: calloutContent,  
                            color: color,  
                            borderWidth: 0.5,  
                            borderColor: borderColor,  
                            bgColor: bgColor,  
                            fontSize: 10,  
                            borderRadius: 5,  
                            padding: 2,  
                            display: "ALWAYS",  
                        }  
                    };  
                    this.markers.push(marker);  
                }  
            },  

getCenterMap(e) {  
                // #ifdef MP-WEIXIN  
                var eType = e.type;  
                // #endif  
                // #ifdef MP-TOUTIAO  
                var eType = e.target.type;  
                // #endif  
                if (eType == 'end') {  
                    let _this = this  
                    this.mapContext.getCenterLocation({  
                        success: (res) => {  
                            if (res.longitude != 0) {  
                                _this.longitude = parseFloat(res.longitude)  
                                _this.latitude = parseFloat(res.latitude)  

                                // N秒内不向后台获取数据  
                                var feeQueryTime = uni.getStorageSync("feeQueryTime") || 0;  
                                var nowDate = new Date().getTime().toFixed();  
                                if ((parseInt(nowDate) - parseInt(feeQueryTime)) >= this.queryInterval) {  
                                    // 获取我的路标列表  
                                    _this.getList();  
                                    uni.setStorageSync("feeQueryTime", nowDate);  
                                }  
                            }  
                        }  
                    })  
                }  
            },  

// 获取我的路标列表  
            getList() {  
                if (this.wxuserMobile) {  
                    var url = ‘’;  
                    uni.request({  
                        url: url,  
                        method: 'POST',  
                        header: {'content-type': 'application/x-www-form-urlencoded'},  
                        data: {  
                            lng: this.longitude,  
                            lat: this.latitude,  
                            mobile: this.wxuserMobile  
                        },  
                        success: res => {  
                            this.markers.splice(0, this.markers.length);  
                            this.list.splice(0, this.list.length);  
                            if (res.data.code == 0 && res.data.positionList != undefined) {  
                                this.list = res.data.positionList;  
                                this.showMakers();  
                            } else {  
                                this.list.splice(0, this.list.length);  
                            }  
                        }  
                    });  
                }  
            },

操作步骤:

拖拽或缩放地图以刷新marker数据并显示

预期结果:

缩放正常不会回跳,安卓端不会卡死

实际结果:

缩放后会自动跳回原来缩放等级,安卓端会卡死掉

bug描述:

字节小程序上,map组件,拖动地图或缩放地图时,会根据中心点获取新数据刷新marker,即清空原有marker后展示新marker,遇到的问题是:
1、IOS端,缩放地图刷新marker后,地图缩放会回到原来的层级。
2、安卓端,缩放地图刷新marker后,地图缩放会回到原来的层级;且安卓端在移动地图获取新数据刷新marker过程中会特别的卡,经常会卡死掉。

备注:①微信小程序上IOS端和安卓端均没有问题 ②marker数据不变的情况下刷新也不会出现以上问题。

2023-06-26 01:43 负责人:无 分享
已邀请:
DCloud_UNI_Anne

DCloud_UNI_Anne

直接使用字节小程序(不用uni-app)是否正常?如果不行请反馈到字节小程序社区

  • 码码儿 (作者)

    已反馈到字节社区

    2023-07-01 23:58

要回复问题请先登录注册