Vue + Echarts 地图解决缩放或平移后切换地图不显示问题

本文介绍了一个关于地图应用中切换省市时地图显示异常的问题,并提供了两种解决方案:一是通过设置notMerge参数为true来更新地图选项;二是使用clear()方法清空画布并重新渲染。然而这两种方法都会导致地图样式丢失。

问题描述

项目需要用到地图切换省市区,在加上地图缩放平移功能后,发现切换省市地图就不显示

缩放平移后切换地图 

 

 

解决方案:

分析:

        chart.setOption(option, notMerge, lazyUpdate);

        图例的setOption有个notMerge参数,可以选择是否不跟之前设置的 option 进行合并,值为falsetrue。默认为 false。即表示合并,意为在原油组件上添加新的数据。合并的规则,详见 组件合并模式。如果为 true,表示所有组件都会被删除,然后根据新 option 重新创建所有新组件。

解决代码:

        this.chartInstance.setOption(changeOption, true);

但是这样有个弊端,地图的样式都会清空需重新设置。另外也可以使用实例自带的clear()方法,效果跟上述差不多。

   this.chartInstance.clear();//清空画布重新渲染 但格式都会消失

### 如何在 UniApp 中使用 ECharts 实现地图可视化 #### 准备工作 为了能够在 UniApp 项目中成功集成并展示 ECharts 地图,需按照如下方法准备环境: 安装 `echarts` 和 `echarts-for-weixin` 插件,在命令行工具下切换到项目的根目录执行以下命令[^2]: ```bash npm install echarts echarts-for-weixin ``` #### 创建组件 创建一个新的 Vue 组件用于承载图表实例。在此过程中需要注意的是要确保页面加载完成后才初始化 ECharts 实例。 定义好 HTML 结构部分,设置容器样式以便于后续的地图显示: ```html <template> <view class="chart-container"> <!-- 定义一个 div 来放置地图 --> <div id="mainMap" style="width: 100%;height:400px;"></div> </view> </template> <script> import * as echarts from 'echarts'; // 导入中国地图数据包 require('echarts/map/js/china.js'); export default { mounted() { this.initChart(); }, methods: { initChart() { const chartDom = document.getElementById('mainMap'); var myChart = echarts.init(chartDom); let option; option = { title: { text: '全国疫情情况', subtext: '', left: 'center' }, tooltip: { trigger: 'item', formatter: '{b}<br/>{c} (人数)' }, visualMap: { min: 0, max: 1000, left: 'left', top: 'bottom', text: ['高', '低'], calculable: true }, series: [ { name: '确诊数', type: 'map', mapType: 'china', roam: false, // 是否开启鼠标缩放平移漫游 label: { show: true }, // 省份名称 itemStyle: { areaColor: '#eee',// 默认区域颜色 borderColor: '#fff' // 边界线颜色 } } ] }; option && myChart.setOption(option); } } } </script> ``` 上述代码片段展示了如何通过 JavaScript 初始化 ECharts 并配置基本参数来呈现一张带有视觉映射效果的中国地图[^1]。 对于遇到的问题解决方案如下: - **缺少 map 文件**:确认已经正确导入了 China 的地理坐标 JSON 数据库(`require('echarts/map/js/china.js')`);如果仍然缺失,则可能是因为网络原因未能下载资源文件,建议检查网络连接状况尝试重新编译构建应用。 - **地图无色彩填充**:这通常是由未指定 `visualMap` 者 `series.itemStyle.areaColor` 属性造成的。可以通过调整这两个属性来自定义同数值范围对应的颜色渐变方案。 - **Tooltip 文本渲染支持 HTML 标签**:默认情况下确实如此,过可以利用自定义模板字符串的方式绕过此限制,即采用 `{a|...}` 这样的形式代替 `<strong>...</strong>` 等标签语法,并配合 rich 配置项完成更复杂的样式定制。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值