如何使echarts制作动态3D中国地图
更新时间: 2021-06-09 14:16:57
阅读 10519
如何使用echarts制作动态3D地图
动态3D中国地图:
如图
一、数据准备
二、插入自定义图表并拖入对应数据如图所示
三、写入参数
代码:
var barDataSet = dataSet.map(function (dataItem) { return [dataItem[0],dataItem[1],dataItem[2]]; }); //声明数据 console.log(dataSet) var maxValue = Math.max(…barDataSet.map(d => d[2])); fetch(‘https://ydcdn.nosdn.127.net/echarts/assets/map/json/china.json').then(j => j.json()).then(json => { echarts.registerMap(‘china’,json);// 引用中国地图json myChart.setOption({ tooltip: { show: true, formatter:(params)=>{ let data =”地理坐标:[“ + params.value[0]+”,”+params.value[1] +”]“+” “+”值:”+ params.value[2]; return data; } }//显示标签,标签显示内容, geo3D: { map: ‘china’, itemStyle: { color:’#034778’,// 地图配色 opacity: 1,// 图形的不透明度 Width: 0.4,// 地图边宽度 Color: ‘#0cd8fd’// 地图边配色 }, emphasis: { //鼠标 hover 高亮时图形和标签的样式。 areaColor: ‘#2B91B7’ //鼠标 hover 高亮时图形和标签的颜色。 }, light: { //光照阴影 main: { color: ‘#fff’, //光照颜色 intensity: 1.2, //光照强度 shadowQuality: ‘high’, //阴影亮度 shadow: true, //是否显示阴影 alpha:55,//光照角度 beta:10//光源方向 }, ambient: { intensity: 0.3//环境光的强度 }//全局的环境光设置 } }, series: { type: “bar3D”, //柱状图 coordinateSystem: ‘geo3D’, barSize: 2, //柱子粗细 shading: ‘lambert’,//三维图形的着色效果 bevelSmoothness:10,//柱子倒角的光滑/圆润度,数值越大越光滑/圆润 opacity: 1, bevelSize:0.5,//柱子的倒角尺寸。支持设置为从 0 到 1 的值。默认为 0,即没有倒角。 itemStyle: { color: ‘#0087f4’//柱状图颜色 },//三维图形的视觉属性,包括颜色,透明度,描边等 data:barDataSet,//引用数据’barDataSet’ } }); }); |
---|
3D飞线地球
如图:
数据准备
插入自定义图表并拖入对应数据如图所示
三、写入参数
代码:
var effDataSet = dataSet.map((data) => { return [data[2], data[3]] }); //圆点数据声明 console.log(effDataSet) var linDataSet = dataSet.map((data) => { return { coords: [ [data[0], data[1]], [data[2], data[3]] ]}; }); //飞线声明数据 Promise.all([ ‘https://nos.netease.com/youdata-netease/public-1592808978441169810.jpg‘, ‘https://nos.netease.com/youdata-netease/public-1592791847069051344.jpg‘ ].map((src) => new Promise((resolve) => { let image = new window.parent.Image(); image.onload = () => resolve(image); image.src = src; image.crossOrigin = ‘anonymous’; }) )).then((textures) => { let canvas = window.parent.document.createElement(‘canvas’); let mapChart = echarts.init(canvas, null, { : 4096, : 2048 });//引用上传的图片 fetch(‘https://ydcdn.nosdn.127.net/echarts/assets/map/json/china.json').then(e => e.json()).then((chinaJson) => { echarts.registerMap(‘china’, chinaJson);//引用中国地图json文件 mapChart.setOption( { geo: { map: ‘china’, label: { fontSize: 12 //文字大小 },//图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称 itemStyle: { areaColor: ‘transparent’,//地图区域的颜色 Color: ‘#00FFFF’,//地图边框颜色 Width: 2//地图边框线宽 },//图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称 regions: [ { name: ‘南海诸岛’, itemStyle: { areaColor: ‘transparent’,//地图区域的颜色 Color: ‘#00FFFF’,//地图边框颜色 Width: 2//地图边框线宽 }//该区域的多边形样式设置 } ],//在地图中对特定的区域配置样式 top: 0,//组件离容器上侧的距离 left: 0,//组件离容器左侧的距离 right: 0,//组件离容器右侧的距离 bottom: 0,//组件离容器下侧的距离 boundingCoords: [ [-180, 90], [180, -90] ]//定义定位的左上角以及右下角分别所对应的经纬度 },//绘制中国地图 series: [{ type: ‘effectScatter’, coordinateSystem: ‘geo’, data:effDataSet,//调用圆点数据 showEffectOn: ‘render’,//绘制完成后显示特效 rippleEffect: { brushType: ‘stroke’//波纹的绘制方式 },//涟漪特效相关配置 symbolSize: 20,//圆点尺寸 itemStyle: { color: ‘#0087f4’,//圆点颜色 shadowBlur: 10,//阴影尺寸 shadowColor: ‘#333’//阴影颜色 },//图形样式。 }]//绘制圆点 }); }); myChart.setOption({ globe: { environment: ‘none’,//地球背景 globeRadius: 50,//地球的半径 baseTexture: textures[0],//地球的纹理,引用第一张图 Texture: textures[0],//地球的高度纹理,引用第一张图 displacementScale: 0.04,//地球顶点位移的大小 realisticMaterial: { roughness: 0.9//材质的粗糙度 },//真实感材质相关的配置项 viewControl:{ autoRotate: true,//是否开启视角绕物体的自动旋转查看不开启为false autoRotateSpeed:10 //物体自转的速度。单位为角度 / 秒,默认为10 ,也就是36秒转一圈。 }, shading: ‘realistic’,//图形的着色效果 postEffect: { enable: true//开启后处理特效 }, light: { main: { intensity: 5,//主光源的强度 shadow: true//主光源是否投射阴影 } },//光照设置 layers: [{ type: ‘blend’, blendTo: ‘emission’, texture: textures[1] //引用第二章图 }, { type: ‘blend’, blendTo: ‘emission’, texture: mapChart//引用上面的圆点中国地图 }]//地球表面层的配置 },//3D地球绘制 series: { type: ‘lines3D’,//3D飞线 coordinateSystem: ‘globe’,//使用三维地理坐标系 data: linDataSet,//引用飞线数据 effect: { show: true,//显示飞线 period: 5,//飞线速度 trailLength: 0.3,//尾迹的长度 trailWidth: 3,//尾迹的宽度 trailOpacity: 1,//尾迹的不透明度 trailColor: ‘#0087f4’//尾迹的颜色 },//飞线的尾迹特效 lineStyle: { : 1,//线条的宽度 color: ‘#0087f4’,//线条的颜色 opacity: 0//线条的不透明度 }, } }); }); |
---|
文档反馈
以上内容对您是否有帮助?