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
我这边调试发现地图还原会默认样式时会提示这样的日志“鉴权失败,当前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的自定义样式缓存策略导致,在特定条件下(如长时间无操作、应用进入后台等)会恢复默认样式。
解决方案:
- 监听地图状态变化:在
onMapLoaded事件中重新设置样式
onMapLoaded(e) {
// 地图加载完成后强制设置自定义样式
const mapContext = uni.createMapContext('map', this)
// 可以尝试重新设置地图属性
}
- 使用定时器定期刷新(不推荐,耗性能):
// 在onLoad中设置定时器
this.styleTimer = setInterval(() => {
// 重新设置地图样式或触发地图刷新
}, 4 * 60 * 1000) // 4分钟刷新一次,避免5分钟超时
- 监听应用状态变化:
onShow() {
// 页面显示时检查并重置地图样式
this.resetMapStyle()
},
methods: {
resetMapStyle() {
// 重新初始化地图或设置样式
}
}

