uni-app 安卓端nvue页面 地图map自定义样式会自动还原

uni-app 安卓端nvue页面 地图map自定义样式会自动还原

示例代码:

<template>  
    <view class="base_body">  
        <map :markers="markers" id="map" layer-style="86777eeb0cd300c65b5c259自定义地图样式id" style="width: 750rpx; height: 750rpx;" :latitude="latitude" :longitude="longitude">     
        </map>  
    </view>  
</template>  

<script>  
    export default {  
        data() {  
            return {  
                map: '',  
                latitude: 39.890, // 地图默认显示的维度  
                longitude: 116.39752, // 地图默认显示的纬度  
            }  
        },  
        onLoad() { },  
        onReady() {},  
        methods: {}  
    }  
</script>

操作步骤:

1

预期结果:

1

实际结果:

1

bug描述:

如题,map的自定义地图样式layer-style设置为高德后台申请的,包名签名什么的都正确的,打开nvue地图一开始能显示自定义样式,但页面开着什么都不操作5分钟后,会自动切换回默认样式,如下图:

刚打开

5分钟后

注:appid appkey 高德key我放在管理员机密信息里,方便你们排查


更多关于uni-app 安卓端nvue页面 地图map自定义样式会自动还原的实战教程也可以访问 https://www.itying.com/category-93-b0.html

8 回复

我这边调试发现地图还原会默认样式时会提示这样的日志“鉴权失败,当前key没有自定义纹理的使用权限,自定义纹理相关内容,将不会呈现!” 你开通下自定义纹理再试试呢

更多关于uni-app 安卓端nvue页面 地图map自定义样式会自动还原的实战教程也可以访问 https://www.itying.com/category-93-b0.html


有权限的啊,第一张图就显示出自定义样式了,5分钟后,又自动还原了。

回复 yorker0503: 自定义纹理 还有一种可能就是高德地图自身存在bug

查了下,的确是高德的收费服务,感谢感谢。

兄弟,你这里怎么解决的?我问了高德的技术支持,他说 :layer-style="自定义地图id"的方式属于在线自定义地图。。。在线地图是需要使用纹理的,需要专业版权限,所以五分钟后就会恢复原来的样子了。。。离线地图我看着又是安卓原生,我们这种跨端编译成app的该怎么整啊?

nvue map 高德地图组件升级、离线个性化地图、离线设置样式文件、可使用nvue map 所有功能、免VIP使用个性化地图:https://ext.dcloud.net.cn/plugin?id=7637

这是一个已知的高德地图SDK在Android平台上的限制问题。在Android端,高德地图SDK对自定义地图样式有缓存机制,当应用进入后台或长时间处于前台但无交互时,SDK可能会自动重置为默认样式以节省资源。

问题原因: 高德地图Android SDK的自定义样式缓存策略导致,在特定条件下(如长时间无操作、应用进入后台等)会恢复默认样式。

解决方案:

  1. 监听地图状态变化:在onMapLoaded事件中重新设置样式
onMapLoaded(e) {
    // 地图加载完成后强制设置自定义样式
    const mapContext = uni.createMapContext('map', this)
    // 可以尝试重新设置地图属性
}
  1. 使用定时器定期刷新(不推荐,耗性能):
// 在onLoad中设置定时器
this.styleTimer = setInterval(() => {
    // 重新设置地图样式或触发地图刷新
}, 4 * 60 * 1000) // 4分钟刷新一次,避免5分钟超时
  1. 监听应用状态变化
onShow() {
    // 页面显示时检查并重置地图样式
    this.resetMapStyle()
},
methods: {
    resetMapStyle() {
        // 重新初始化地图或设置样式
    }
}
回到顶部