小程序echarts 构建中国地图并锚定区域点击事件

时间:2024-02-01 18:51:58

小程序Echarts 构建中国地图并锚定区域点击事件

Step1 效果展示

使用的绘图框架为 Echarts for Wexin

具体API文档地址请点击 [---->](https://www.echartsjs.com/zh/tutorial.html#自定义构建 ECharts)

Step2 条件准备

1.Github上下载echarts-for-weixin 项目

  1. 将组件 ec-canvans 全部导入你的小程序中,把ec-canvans 作为组件引用

3.在使用到的页面注册该组件

show.json

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

show.wxml

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

show.wxss

.box {
	width:100%;
	height:100%;
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
} 
#mychart-dom-map {
position: relative;
width: 100%;
padding-top: 20rpx;
height: 720rpx;
}

Step3 逻辑实现

3.1 引入地图数据 data.js

该数据是Canvas绘制地图的关键,可以使用json 或者 js 形式进行导入,小程序中使用js 更为方便。

代码过长,托管在Gitee data.js

3.2 组件初始化

通过 pageInstance 绑定page 内事件,进行锚定。

show... 共同构成一个地图展示组件,可以直接进行引入使用。

show.js

import * as echarts from \'../../../ec-canvas/echarts.js\';
import geoJson from \'data.js\';
let chart = null;
let dataList = [{ name: \'china\' }];
let pageInstance = {}
// 2、进行初始化数据
function initChart(canvas, width, height) {
  chart = echarts.init(canvas, null, {
    width: width,
    height: height
  });
  canvas.setChart(chart); //容器初始化
  echarts.registerMap(\'china\', geoJson); //地图数据注册

  var option = {
    tooltip: {
      triggerOn: "click",
      formatter: function (e, t, n) {
        pageInstance.BindEvent(e);
        return e.name
      }
    },//点击响应事件
    geo: {
      map: "china",
      roam: !1,
      scaleLimit: {
        min: 1,
        max: 2
      },
      zoom: 1.23,
      top: 120,
      label: {
        normal: {
          show: !0,
          fontSize: "10",
          color: "rgba(0,0,0,0.7)"
        }
      },
      itemStyle: {
        normal: {
          //shadowBlur: 50,
          //shadowColor: \'rgba(0, 0, 0, 0.2)\',
          borderColor: "rgba(0, 0, 0, 0.2)"
        },
        emphasis: {
          areaColor: "#f2d5ad",
          shadowOffsetX: 0,
          shadowOffsetY: 0,
          borderWidth: 0
        }
      }
    },//地图颜色等配置
    series: [{
      name: "来源信息",
      type: "map",
      geoIndex: 0,
      data: dataList
    }]//对应点击事件响应
  };

  chart.setOption(option);//返回初始化结果
  return chart;
}

Component({
  /**
   * 组件的属性列表
   */
  options: {
    addGlobalClass: true,
    multipleSlots: true
  },
  properties: {

  },

  /**
   * 组件的初始数据
   */
  data: {
    ec: {
      onInit: initChart
    }
  },

  /**
   * 组件的方法列表
   */
  lifetimes: {
    created: function () {
       pageInstance = this;
    }
  },
  methods: {
    BindEvent(e){
      //点击事件锚定
      // e.name 是 省份 把 需要的操作在该事件内实现
    }
  }
})

小程序开发联系 QQ 1025584691