华为地图mapStyle首次加载未正常生效,如何解决?
华为地图首次加载自定义样式不生效修复方案
根因说明
该问题核心是setMapStyle调用时机早于地图实例初始化完成,首次加载时地图实例未就绪,样式配置被默认样式覆盖,二次进入时地图已经完成预热,样式即可正常加载。
可落地修复方案
- 优先调整样式调用时机,放到地图
onMapReady回调中执行,确保地图实例初始化完成后再传入自定义样式
Java参考代码:@Override public void onMapReady(HuaweiMap huaweiMap) { mHuaweiMap = huaweiMap; MapStyleOptions customStyle = MapStyleOptions.loadRawResourceStyle(this, R.raw.your_custom_style_json); mHuaweiMap.setMapStyle(customStyle); } - 若调整时机后仍不生效,可增加100~200ms的延迟调用,规避地图内部渲染队列未清空导致的样式覆盖问题
Kotlin参考代码:override fun onMapReady(map: HuaweiMap) { mHuaweiMap = map mHuaweiMap?.postDelayed({ val customStyle = MapStyleOptions.loadRawResourceStyle(this, R.raw.your_custom_style_json) mHuaweiMap?.setMapStyle(customStyle) }, 150) } - 检查你生成的样式JSON文件编码,确保为UTF-8无BOM格式,避免首次读取文件时编码解析失败
- 不要同时执行地图类型设置和样式设置,可先设置地图类型为简约地图对应的
MAP_TYPE_NORMAL,间隔50ms后再设置自定义样式,避免参数冲突
内容的提问来源于stack exchange,提问作者Partho Bhowmick
相关产品推荐
相关产品推荐

