微信小程序:使用echarts-for-weixin绘制中国地图

简介: 微信小程序:使用echarts-for-weixin绘制中国地图

image.png

使用

1、下载源码,将ec-canvas文件夹拷贝到小程序目录,第三方代码,我都放在libs文件夹

https://github.com/ecomfe/echarts-for-weixin


libs/
  ec-canvas

2、引入组件 page.json


{
  "usingComponents": {
    "ec-canvas": "../../libs/ec-canvas/ec-canvas"
  }
}

3、使用组件 page.wxml


<view class="container">
  <ec-canvas id="mychart-dom-map-china" canvas-id="mychart-map-china" ec="{{ ec }}"></ec-canvas>
</view>

不要忘记设置样式 page.wxss


.container {
  width: 100%;
  height: 800rpx;
}
ec-canvas {
  width: 100%;
  height: 100%;
}

4、逻辑代码 page.js


推荐使用延迟加载图表的方式,这样可以动态传参,和事件传递


参见项目pages/lazyLoad代码示例











// pages/map-demo/map-demo.js
import * as echarts from '../../libs/ec-canvas/echarts';
import geoJson from '../../libs/ec-canvas/map-data-china.js';
// 设置数据,可以增加更多的数据参数
function setOption(chart) {
  const option = {
    series: [
      {
        type: 'map',
        mapType: 'china',
        label: {
          normal: {
            show: true,
          },
          emphasis: {
            textStyle: {
              color: '#fff',
            },
          },
        },
        itemStyle: {
          normal: {
            borderColor: '#389BB7',
            areaColor: '#fff',
          },
          emphasis: {
            areaColor: '#389BB7',
            borderWidth: 0,
          },
        },
        animation: false,
        data: [
          { name: '郑州市', value: 100 },
          { name: '洛阳市', value: 10 },
          { name: '开封市', value: 20 },
          { name: '信阳市', value: 30 },
          { name: '驻马店市', value: 40 },
          { name: '南阳市', value: 41 },
          { name: '周口市', value: 15 },
          { name: '许昌市', value: 25 },
          { name: '平顶山市', value: 35 },
          { name: '新乡市', value: 35 },
          { name: '漯河市', value: 35 },
          { name: '商丘市', value: 35 },
          { name: '三门峡市', value: 35 },
          { name: '济源市', value: 35 },
          { name: '焦作市', value: 35 },
          { name: '安阳市', value: 35 },
          { name: '鹤壁市', value: 35 },
          { name: '濮阳市', value: 35 },
          { name: '开封市', value: 45 },
        ],
      },
    ],
  };
  chart.setOption(option);
}
Page({
  /**
   * 页面的初始数据
   */
  data: {
    ec: {
      // 将 lazyLoad 设为 true 后,需要手动初始化图表
      lazyLoad: true,
    },
  },
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {
    // 获取组件
    this.ecComponent = this.selectComponent('#mychart-dom-map-china');
    this.initChart();
  },
  // 初始化图表
  initChart() {
    this.ecComponent.init((canvas, width, height, dpr) => {
      // 获取组件的 canvas、width、height 后的回调函数
      // 在这里初始化图表
      const chart = echarts.init(canvas, null, {
        width: width,
        height: height,
        devicePixelRatio: dpr, // new
      });
      // 注册中国地图数据包
      echarts.registerMap('china', geoJson);
      // 设置数据
      setOption(chart);
      // 将图表实例绑定到 this 上,可以在其他成员函数(如 dispose)中访问
      this.chart = chart;
      // 绑定点击事件
      let that = this;
      chart.on('click', function (params) {
        that.handleChartClick(params);
      });
      // 注意这里一定要返回 chart 实例,否则会影响事件处理等
      return chart;
    });
  },
  // 销毁图表
  disposeChart() {
    if (this.chart) {
      this.chart.dispose();
    }
  },
  handleChartClick(params) {
    // 可以通过参数去数据列表中获取完整数据 params.dataIndex
    console.log(params);
  },
});

关于地图数据 map-data-china.js 和pc所使用的china.js稍有不同,根据示例代码,我改造了一份数据


wget https://raw.githubusercontent.com/mouday/echarts-map/master/echarts-for-weixin/js/wx-china.js
# 镜像
wget https://cdn.jsdelivr.net/gh/mouday/echarts-map/master/echarts-for-weixin/js/wx-china.js

更多数据可参看

echarts:从github及其镜像下载china.js和china.json


实现效果

image.png


问题

1、重新渲染echarts组件


可以使用 wx:if ,移除元素后再显示,即可执行组件完整生命周期

相关文章
|
1月前
|
JSON JavaScript 定位技术
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
vue中使用echarts实现省市地图绘制,根据数据显示省市天气图标及温度信息
131 1
|
2月前
|
JavaScript 定位技术
echarts地图数据信息流向图效果
本文介绍了如何使用 ECharts 创建一个地图数据信息流向图效果,包括设置地理坐标、线条动画和流向图的实现方法,并通过 Vue.js 封装了一个可重用的 ECharts 地图组件。
132 23
echarts地图数据信息流向图效果
|
1月前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
55 1
|
1月前
|
JSON JavaScript 前端开发
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
385 0
|
3月前
|
小程序 JavaScript
微信小程序使用echarts图表(ec-canvas)
这篇文章介绍了在微信小程序中使用`ec-canvas`集成echarts图表的方法,包括解决加载时报错的问题、配置图表组件、以及在小程序页面中引入和使用这些图表组件的步骤。
469 1
微信小程序使用echarts图表(ec-canvas)
|
4月前
|
小程序 定位技术 API
uniapp 开发微信小程序 --【地图】打开地图选择位置,打开地图显示位置(可开启导航)
uniapp 开发微信小程序 --【地图】打开地图选择位置,打开地图显示位置(可开启导航)
344 0
|
4月前
|
小程序 前端开发
【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)
【微信小程序-原生开发】实用教程22 - 绘制图表(引入 echarts,含图表的懒加载-获取到数据后再渲染图表,多图表加载等技巧)
252 0
|
4月前
|
小程序 定位技术
【微信小程序-原生开发+TDesign】地图导航(wx.openLocation的使用)
【微信小程序-原生开发+TDesign】地图导航(wx.openLocation的使用)
79 0
|
4月前
echarts 热力图(中国地图版)
echarts 热力图(中国地图版)
148 0
|
4月前
echarts 高亮轮廓的中国地图
echarts 高亮轮廓的中国地图
191 0