EchartsLayer Class

客户端可视化.EchartsLayer(map, options)

基于mapboxgl的Layer对象进行的拓展

Fx构造函数

# new EchartsLayer(map, options)

mapboxgl的echars 4.0的实现

参数:
名称 类型 描述
map Object

传入的mapboxgl的地图对象

options Object

echarts.options 使用 option 来描述其对图表的各种需求,包括:有什么数据、要画什么图表、图表长什么样子、含有什么组件、组件能操作什么事情等等。简而言之,option 表述了:数据、数据如何映射成图形、交互行为。

作者:
  • 基础平台/创新中心 潘卓然 ParnDeedlit
See:

查看源代码 mapboxgl/overlay/EchartsLayer.js, line 10

Examples
option的关键参数
var option = {
   mapboxgl: {     //关键地方---1
      roam: true
   },
   series: [{
      coordinateSystem: 'mapboxgl',//关键地方---2
   }]
};
// 用 option 描述 `数据`、`数据如何映射成图形`、`交互行为` 等。
    // option 是个大的 JavaScript 对象。
    var option = {
        // option 每个属性是一类组件。
        legend: {...},
        grid: {...},
        tooltip: {...},
        toolbox: {...},
        dataZoom: {...},
        visualMap: {...},
        // 如果有多个同类组件,那么就是个数组。例如这里有三个 X 轴。
        xAxis: [
            // 数组每项表示一个组件实例,用 type 描述“子类型”。
            {type: 'category', ...},
            {type: 'category', ...},
            {type: 'value', ...}
        ],
        yAxis: [{...}, {...}],
        // 这里有多个系列,也是构成一个数组。
        series: [
            // 每个系列,也有 type 描述“子类型”,即“图表类型”。
            {type: 'line', data: [['AA', 332], ['CC', 124], ['FF', 412], ... ]},
            {type: 'line', data: [2231, 1234, 552, ... ]},
            {type: 'line', data: [[4, 51], [8, 12], ... ]}
        }]
    };

    // 调用 setOption 将 option 输入 echarts,然后 echarts 渲染图表。
    var layer = new mapboxgl.zondy.EchartsLayer(map, option);
    layer.update(option);
系列里的 series.data 是本系列的数据。而另一种描述方式,系列数据从 dataset 中取:
    var option = {
        dataset: {
            source: [
                [121, 'XX', 442, 43.11],
                [663, 'ZZ', 311, 91.14],
                [913, 'ZZ', 312, 92.12],
                ...
            ]
        },
        xAxis: {},
        yAxis: {},
        series: [
            // 数据从 dataset 中取,encode 中的数值是 dataset.source 的维度 index (即第几列)
            {type: 'bar', encode: {x: 1, y: 0}},
            {type: 'bar', encode: {x: 1, y: 2}},
            {type: 'scatter', encode: {x: 1, y: 3}},
            ...
        ]
    };