uni-app 华为手机选择地图uni.chooseLocation时若选大致位置地图卡顿且顶部导航栏闪烁 选择精确位置才正常

发布于 1周前 作者 songsunli 来自 Uni-App

uni-app 华为手机选择地图uni.chooseLocation时若选大致位置地图卡顿且顶部导航栏闪烁 选择精确位置才正常

测试过的手机:

HarmonyOS 版本 4.2.0

操作步骤:

先进应用设置权限管理哪里将应用的精准定位关闭,再次进应用选择地图,会弹提示更改为精准位置还是继续使用大致位置,选择级续使用过大致位置

预期结果:

希望地图能正常使用,且不影响手机性能

实际结果:

选择继续使用大致位置 地图和手机都卡死了,多点几次完成或者左上角×退出地图后应用的头部导航栏一直闪烁,且这时候手机巨卡

bug描述:

目前测试的华为鸿蒙会这样,附件有具体型号和问题表现,使用选择地图且选择使用大致位置会导致地图和手机均卡主,(附件太大了无法上传,用的第三方插件压缩的,有水印)

附件:

Image 1 Image 2 huawei.zip


2 回复

同问题。解决了嘛?


针对您提到的在uni-app中使用uni.chooseLocation功能时,在华为手机上出现选择大致位置时地图卡顿且顶部导航栏闪烁的问题,这通常可能是由于地图组件在处理不同精度位置数据时的性能差异或渲染问题导致的。虽然直接定位到具体的原因可能比较复杂,但我们可以尝试通过优化代码和调用方式来减少这种影响。以下是一个简化的代码示例,展示如何调用uni.chooseLocation并处理返回的位置数据,同时给出一些可能的优化思路。

// 调用uni.chooseLocation
uni.chooseLocation({
    type: 'gcj02', // 坐标系,默认为 wgs84
    success: function (res) {
        console.log('选择位置成功:', res);
        if (res.name) {
            // 显示选择的地点名称
            uni.showToast({
                title: '选择了地点: ' + res.name,
                icon: 'success'
            });
        }
        // 根据返回的位置数据进行后续处理
        const { latitude, longitude, address } = res;
        // 示例:将位置信息传递给地图组件或进行其他逻辑处理
        updateMapWithLocation(latitude, longitude, address);
    },
    fail: function (err) {
        console.error('选择位置失败:', err);
        uni.showToast({
            title: '选择位置失败',
            icon: 'none'
        });
    }
});

// 更新地图组件位置的函数
function updateMapWithLocation(latitude, longitude, address) {
    // 假设有一个地图组件的id为'myMap'
    const mapContext = uni.createMapContext('myMap');
    mapContext.moveToLocation({
        latitude,
        longitude,
        scale: 18, // 设置缩放级别
        animationEnable: true // 是否启用动画
    });
    // 可以在这里添加标记点等额外操作
}

// 优化思路:
// 1. 确保地图组件的版本是最新的,因为新版本通常会修复一些性能问题。
// 2. 在选择位置前后,尝试使用uni.hideNavigationBar()和uni.showNavigationBar()来控制导航栏的显示,以减少闪烁。
// 3. 对于大致位置的选择,可以考虑在后台预先处理位置数据,只将精确位置传递给前端进行渲染,以减少前端处理压力。
// 4. 检查是否有其他JS或CSS代码影响了地图组件的渲染性能。

请注意,上述代码仅作为示例,并未直接解决您提到的具体问题。实际项目中,可能需要根据具体情况调整和优化代码。如果问题依旧存在,建议进一步排查或向uni-app社区寻求更专业的帮助。

回到顶部