微信小程序ec-canvas(echarts)显示地图【以甘肃省为例】

参考文档《微信小程序使用echarts显示全国地图》《如何在微信小程序开发中使用echarts以及踩坑记录(最全教程)》

一、效果图

在这里插入图片描述

二、实现

1、下载echarts插件

在这里插入图片描述

  • ec-canvas文件夹放置小程序的项目目录下( components或pages下 均可,根据个人习惯)

在这里插入图片描述

  • github 网页下载时,可以看到 ec-canvas 的版本号为 5.3.3 版本(定制图表时需要版本一致,若不定制可忽略)

在这里插入图片描述

2、定制图形,生成 echarts.min.js 文件

ec-canvas目录中的 echarts.js有些大(包含了所有图表),小程序后期上线对文件大小有要求,所以建议进行定制可减少文件大小占比。

在这里插入图片描述

  • 点击在线定制
    在这里插入图片描述
  • 选择版本(必须和前面下载的ec-canvas中的echarts.js版本保持一致)
  • 选择需要定制的图表(我需要的是地图map和视觉映射visualMap),其它保持默认

在这里插入图片描述

  • 其它选项包保持默认,点击下载。

在这里插入图片描述

  • 下载完成后,把项目中 ec-canvas目录中的 echarts.js 文件替换为下载的文件:echarts.min.js

在这里插入图片描述

  • 注意: ec-canvas.jsimport引入的是原来的echarts.js文件,需要自己改成刚才下载的文件,如下图所示

在这里插入图片描述

3、小程序中使用

(1)下载甘肃地图

  • 下载地址:https://datav.aliyun.com/portal/school/atlas/area_selector
  • 搜索想要的地图节点,选择 JSON API(包含子域),我下载的是甘肃省
  • 复制链接并在新窗口打开,这个文件原本为json格式,我们在小程序项目的文件目录下新建一个 mapData.js ,将页面中的所有内容复制到这个js文件中并将其公开(module.exports = 页面上复制的内容)。

在这里插入图片描述
在这里插入图片描述

(2)使用

analysis.json文件中引入ec-canvas组件

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

analysis.js文件中引入 mapData.jsec-canvas 中的 echarts.js

import * as echartsAll from '../../ec-canvas/echarts.min'
import geoJson from './mapData';

在页面analysis.wxml文件

<view class="chatdt">
  <ec-canvas-all id="mychart-dom-area" canvas-id="mychart-area" ec="{{ dtMap }}"></ec-canvas-all>
</view>

在页面analysis.wxss文件

.chatdt {
  width: 750rpx;
  height: 750rpx;
  margin: 0 auto;
}

analysis.js文件

let defaultDtObj = {
  tooltip: {
    show: false,
  },
  visualMap: {
    type: 'continuous',
    inRange: {
      color: '#7ecac6', //地图用一种颜色显示,不同程度的话,写成数组形式的颜色
    },
    show: false
  },
  series: [{
    type: 'map',
    mapType: 'gansu',
    left: 10,
    right: 10,
    label: {
      normal: {
        show: true, //在省市区是否显示省市区名称
        formatter: '{b}\n{c}',
        fontSize: 10,
        lineHeight: 13,
      },
    },
    itemStyle: {
      borderColor: '#ffffff',
      emphasis: {
        areaColor: '#6aa4ce',
        borderWidth: 0
      },
    },
    animation: false,
    selectedMode: false,
    data: [
      { name: '兰州', value: 0 },
      { name: '平凉', value: 0 },
      { name: '张掖', value: 0 },
      { name: '酒泉', value: 0 },
      { name: '白银', value: 0 },
      { name: '庆阳', value: 0 },
      { name: '嘉峪关', value: 0 },
      { name: '武威', value: 0 },
      { name: '临夏', value: 0 },
      { name: '定西', value: 0 },
      { name: '天水', value: 0 },
      { name: '陇南', value: 0 },
      { name: '甘南', value: 0 },
      { name: '金昌', value: 0 },
    ],
  }]
}
Page({
  data: {
    dtMap: {
      onInit: function (canvas, width, height, dpr) {
        dtChart = echartsAll.init(canvas, null, {
          width: width,
          height: height,
          devicePixelRatio: dpr // new
        });
        canvas.setChart(dtChart);
        echartsAll.registerMap('gansu', geoJson);
        dtChart.setOption(getDtOption());
        return dtChart;
      }
    },
  },
  getDtData() {
    let obj1 = { ...defaultDtObj }
    obj1.series[0].data = [
      { name: '兰州', value: 10 },
      { name: '平凉', value: 20 },
      { name: '张掖', value: 30 },
      { name: '酒泉', value: 40 },
      { name: '白银', value: 41 },
      { name: '庆阳', value: 15 },
      { name: '嘉峪关', value: 10 },
      { name: '武威', value: 20 },
      { name: '临夏', value: 30 },
      { name: '定西', value: 40 },
      { name: '天水', value: 41 },
      { name: '陇南', value: 15 },
      { name: '甘南', value: 15 },
      { name: '金昌', value: 15 },
    ]
    dtChart.setOption(obj1)
  },
  onReady() {
    this.getDtData()
  }
})

function getDtOption() {
  return defaultDtObj
}
  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序中使用ECharts需要使用`ec-canvas`组件,并在组件中设置`canvas-id`和`ec`属性。如果您在canvas标签内设置了`ec`属性,但是`onInit`方法没有被执行,可能是因为您没有正确地引入ec-canvas组件或者没有正确地配置`onInit`方法。以下是一个基本的使用ec-canvas的示例: 1. 在WXML文件中引入ec-canvas组件。 ```html <!-- index.wxml --> <view class="container"> <ec-canvas id="mychart-dom-bar" canvas-id="mychart-bar" ec="{{ ec }}"></ec-canvas> </view> ``` 2. 在JS文件中初始化ec-canvas组件,并设置`onInit`方法。 ```javascript // index.js import * as echarts from '../../components/ec-canvas/echarts'; Page({ data: { ec: { onInit: initChart } }, onLoad: function (options) { // ... } }); function initChart(canvas, width, height, dpr) { const chart = echarts.init(canvas, null, { width: width, height: height, devicePixelRatio: dpr // 分辨率 }); canvas.setChart(chart); const option = { // ... }; chart.setOption(option); return chart; } ``` 请注意,`onInit`方法必须在组件的`ec`属性中设置,并且需要传入一个函数,该函数会在组件初始化时被调用。该函数必须接受四个参数:canvas、width、height和dpr。在该函数中,您可以使用ECharts的API初始化图表,并将图表对象返回。最后,您需要在图表对象上调用`setOption`方法,将选项对象传递给图表。 如果您已经正确地引入ec-canvas组件,并设置了`onInit`方法,但仍然无法正常工作,请检查您的选项对象是否正确,并确保ECharts库已正确地引入到您的小程序中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值