...
最后,为了把数据输入到自定义控件,需要设置正确的配置项,在此我们直接拷贝了Echart热度图的配置项(option)的设定。
由于,数据的获取是通过异步请求实现的,所以,在刷新自定义控件的前端显示时不能直接初始化option变量,而应该使用myChart由于,数据的获取是通过异步请求实现的,所以,在刷新自定义控件的前端显示时不能直接初始化option变量,而应该通过getAddinById获得EChart控件的引用,然后设置其属性chart.setOption( option= {})实现。实现更新。
完整的代码如下所示:
代码块 |
---|
let param = {}; this.dwf_axios.post("/omf/entities/Asset/objects", param).then(res => { var objs = res.data.data; console.log(objs); points = objs.map(x => { return [x.locationX, x.locationY, x.workHours] }); var myChart.setOption(option = { animation: false, titlebmap: { textcenter: '全国开工热度分布',[104.114129, 37.550339], zoom: }5, bmap: { roam: true center: [104.114129, 37.550339], }, zoom: 3, roam: true }, visualMap: { show: false, top: 'top', min: 0, max: 5, seriesIndex: 0, calculable: true, inRange: { color: ['blue', 'blue', 'green', 'yellow', 'red'] } }, series: [{ type: 'heatmap', coordinateSystem: 'bmap', data: points, pointSize: 5, blurSize: 8 }] }); }) // 假设EChart控件的代号是EChart1 var myChart = this.getAddinById("EChart1"); myChart.chart.setOption(option); }) |
将上述代码放入自定义控件,最终效果是:
关于热度图的具体使用,可以进一步参考:https://echarts.apache.org/zh/option.html#series-heatmap.type
...
代码块 |
---|
function mapChildren(tree = []){ let arr = []; if(!!tree) { tree.forEach(item => { let obj = {}; obj['name'] = item.right_partName; obj['value'] = item.childrenCount; if('children' in item) { obj['value'] = item.children.length; obj['children'] = mapChildren(item.children); } else { obj['value'] = 0; } arr.push(obj); }) } return arr } let param = { "childrenCondition":"", "leafCondition":"", "queryDirection":"LEFT_TO_RIGHT", "recursiveLevel":"6", "rootCondition":"and leftclass.plt_partType='产品'", "startIndex":0}; this.dwf_axios.post(`/omf/relations/PartToPart/tree`,param).then(res => { //在回调中处理 let temRes = res.data.data; let data = mapChildren(temRes); let option = myChart.setOption({ tooltip: { trigger: 'item', triggerOn: 'mousemove' }, series:[ { type: 'tree', id data: 0data, nameedgeShape: 'tree1polyline', dataleft: data'2%', topright: '10%2%', lefttop: '8%', bottom: '22%20%', rightsymbol: '20%emptyCircle', symbolSizeorient: 7'vertical', edgeShapeexpandAndCollapse: 'polyline'true, edgeForkPositionlabel: '63%',{ initialTreeDepth: 3, position: 'top', lineStyle rotate: {-90, widthverticalAlign: 2'middle', }, align: 'right', label: { fontSize: 9 backgroundColor: '#fff',}, leaves: { position: 'left', label: { verticalAlign: 'middle', alignposition: 'rightbottom', }, rotate: -90, leaves: { labelverticalAlign: {'middle', positionalign: 'rightleft', } verticalAlign: 'middle', }, align: 'left' animationDurationUpdate: 750 } ] }; }, // 假设控件的代号是“EChart2” let myChart = this.getAddinById("EChart2"); expandAndCollapse: true, animationDuration: 550, animationDurationUpdate: 750 } ] }myChart.chart.setOption(option); }); |
最终结果如下所示:
关于树的细节配置详见:https://echarts.apache.org/zh/option.html#series-tree.type
...