首页 > 其他分享 >数据可视化大屏Echarts高级开发散点图实战案例分析(地图扩展插件bmap.min.js、散点图、百度地图控件、柱图、涟漪动图、条件判断颜色)

数据可视化大屏Echarts高级开发散点图实战案例分析(地图扩展插件bmap.min.js、散点图、百度地图控件、柱图、涟漪动图、条件判断颜色)

时间:2023-01-07 17:37:32浏览次数:43  
标签:控件 stylers color 地图 散点图 featureType params elementType Echarts


系列文章目录

  1. ​​燃,拿来即用!Echarts动态排名柱状图(自适应电脑和手机端)​​
  2. ​​漏刻有时数据可视化Echarts组件开发(27):盒须图(箱线图)前后端php交互的实战案例​​
  3. ​​漏刻有时数据可视化Echarts组件开发(26):全国地图三级热力图下钻和对接api自动调用数据开发实录​​
  4. ​​漏刻有时数据可视化Echarts组件开发(25):引导线labelLine和散点图scatter的开发​​
  5. ​​漏刻有时数据可视化Echarts组件开发(24):本地离线的地图下钻与散点图​​
  6. ​​漏刻有时数据可视化Echarts组件开发(23):世界地图动态时间轴的散点气泡图​​
  7. ​​漏刻有时数据可视化Echarts组件开发(22):echarts高端地图交互美化​​
  8. ​​漏刻有时数据可视化Echarts组件开发(18):渐变透明柱状图和地图map结合的案例​​
  9. ​​漏刻有时数据可视化Echarts组件开发(17):值域漫游图​​
  10. ​​漏刻有时数据可视化Echarts组件开发(21):基于echarts开发的自动旋转map3D下钻和柱图地图​​
  11. ​​漏刻有时数据可视化Echarts组件开发(6):象形柱图实现水塔水位的动画​​
  12. ​​Echarts实战案例代码(59):geomap实现飞线、散点、引导线以及重叠label的解决​​
  13. ​​漏刻有时数据可视化Echarts组件开发(7):geo地图map3D组件的定时高亮轮播的解决方案​​
  14. ​​Echarts实战案例代码(46):带渐变背景颜色的倾斜角度的图表的CSS样式表解决方案​​

文章目录

  • ​​系列文章目录​​
  • ​​前言​​
  • ​​项目说明​​
  • ​​一、引入外部文件​​
  • ​​二、构建dom容器​​
  • ​​三、核心代码开发​​
  • ​​1.散点数据格式​​
  • ​​2.bmap参数配置​​
  • ​​3.series组件参数配置​​
  • ​​4.自适应浏览器大小​​
  • ​​5.百度地图接口对接​​
  • ​​6.百度地图个性化配置参数​​
  • ​​总结​​

前言

数据可视化大屏Echarts高级开发散点图实战案例分析(地图扩展插件bmap.min.js、散点图、百度地图控件、柱图、涟漪动图、条件判断颜色)_数据可视化

项目说明

百度地图和echarts的结合使用,是数据可视化大屏开发过程中最亮眼的搭配组合,而连接两者之间关系的就是bmap.js。本项目主要涉及到:

  • 百度地图的引入;
  • 百度地图个性化配置;
  • echarts组件bmap的调用和参数设置;
  • echarts散点图组件的调用;
  • echarts路径图组件的调用;
  • 按照数据的不同条件判断柱图颜色;

一、引入外部文件

  • 其中lock_blue.js是个性化地图配置的外部文件,以便减少主体文件的体积大小;
  • ​//api.map.baidu.com/​​,采用自适应http和https协议头的写法,因此在预览时必须通过web服务器方式浏览;
<script type="text/javascript" src="js/echarts.min.js"></script>
<script type="text/javascript"
src="//api.map.baidu.com/api?v=3.0&ak=3HGqGo1RHf8zsLZ***"></script>
<script type="text/javascript" src="js/bmap.min.js"></script>
<!--百度个性化地图-->
<script type="text/javascript" src="js/skins/lock_blue.js"></script>

二、构建dom容器

<div id="container" style="height: 100%;"></div>

数据可视化大屏Echarts高级开发散点图实战案例分析(地图扩展插件bmap.min.js、散点图、百度地图控件、柱图、涟漪动图、条件判断颜色)_echarts_02

三、核心代码开发

1.散点数据格式

在项目应用,可以按照该格式生成API,通过封装函数进行调用和定时刷新。

  • name,地市名称,格式:string;
  • value,经纬度坐标,格式:array;
  • data,柱图高度,格式:number;
//散点图标准数据格式;
var scrData = [
{"name": "杭州市", "value": [120.203437, 30.253831], data: 40},
{"name": "成都市", "value": [104.098202,30.595856], data: 20},
{"name": "上海市", "value": [121.473641, 31.223825], data: 50},
{"name": "长沙市", "value": [112.89211,28.27699], data: 40},
{"name": "西安市", "value": [108.955088,34.429473], data: 78},
{"name": "北京市", "value": [116.418642,39.906744], data: 18},
{"name": "兰州市", "value": [103.857887,36.146224], data: 38}
]

2.bmap参数配置

具体涵义见注释

bmap: {
center: [121.554586, 29.813444],//默认中心点;
zoom: 5,//国家级:5,省级:8,市级:10,街道级:12
roam: true, //是否开启平游或缩放
mapStyle: mapStyle// {style: 'midnight'}//grayscale,googlelite
},

3.series组件参数配置

series: [
{
type: 'lines',
coordinateSystem: 'bmap',
zlevel: 5,
effect: {
symbolSize: 2 // 图标大小
},
lineStyle: {
width: 10, // 尾迹线条宽度
color: function (params) {
//console.log(params);
if (params.name == "上海市" || params.name == "北京市") {
return '#F7AF21';
} else {
return 'rgb(22,255,255, 1)';
}
},
opacity: 0.7, // 尾迹线条透明度
curveness: 0 // 尾迹线条曲直度
},
label: {
show: false,
position: 'end',
},
silent: true,
data: getBodyData(scrData, getMax(scrData))
},
// 柱状体的顶部
{
type: 'scatter',
coordinateSystem: 'bmap',
zlevel: 5,
label: {
show: true,
formatter: function (params) {
//console.log(params)
return "产值:" + params.data.value[2];
},
position: "top"
},
symbol: 'circle',
symbolSize: [10, 5],
itemStyle: {
color: function (params) {
// console.log(params);
if (params.name == "上海市" || params.name == "北京市") {
return '#F7AF21';
} else {
return 'rgb(22,255,255, 1)';
}
},
opacity: 1
},
silent: true,
data: getTopData(scrData, getMax(scrData))
},
// 柱状体的底部
{
type: 'scatter',
coordinateSystem: 'bmap',
zlevel: 4,
label: {
formatter: '{b}',
position: 'bottom',
color: '#fff',
fontSize: 12,
distance: 10,
show: false
},
symbol: 'circle',
symbolSize: [10, 5],
itemStyle: {
color: function (params) {
if (params.name == "上海市") {
return '#F7AF21';
} else {
return 'rgb(22,255,255, 1)';
}
},
opacity: 1
},
silent: true,
data: scrData
},
// 底部外框
{
type: 'effectScatter',
coordinateSystem: 'bmap',
zlevel: 4,
label: {
show: false
},
rippleEffect: {
scale: 2,
brushType: "fill"
},
symbol: 'circle',
symbolSize: [20, 10],
itemStyle: {
color: function (params) {
if (params.name == "上海市" || params.name == "北京市") {
return '#F7AF21';
} else {
return 'rgb(22,255,255, 1)';
}
},
opacity: 1
},
silent: true,
data: scrData
}
]

通过 color: function (params){}回调函数进行判断和设置,在实际开发过程中,可以封装为一个函数,进行便捷调用。

color: function (params) {
//console.log(params);
if (params.name == "上海市" || params.name == "北京市") {
return '#F7AF21';
} else {
return 'rgb(22,255,255, 1)';
}
},

数据可视化大屏Echarts高级开发散点图实战案例分析(地图扩展插件bmap.min.js、散点图、百度地图控件、柱图、涟漪动图、条件判断颜色)_组件开发_03


4.自适应浏览器大小

本案例在开发过程中,散点有明显的滑动动画;且在全屏的时候,散点无法自动紧贴地图,经过多次尝试,设置了定时 myChart.resize()效果。

myChart.setOption(option);
window.addEventListener("resize", function () {
setTimeout(function () {
myChart.resize();
}, 200)
});

5.百度地图接口对接

// 百度地图接口对接设置;
var map = myChart.getModel().getComponent('bmap').getBMap();
//map.enableScrollWheelZoom(true);
//卫星地图
//map.setMapType(BMAP_SATELLITE_MAP);
//地图控件;
map.addControl(new BMap.MapTypeControl({mapTypes: [BMAP_NORMAL_MAP, BMAP_SATELLITE_MAP, BMAP_HYBRID_MAP]}));

6.百度地图个性化配置参数

var mapStyle = {
styleJson: [
{
featureType: 'water',
elementType: 'all',
stylers: {
color: '#044161'
}
},
{
featureType: 'land',
elementType: 'all',
stylers: {
color: '#004981'
}
},
{
featureType: 'boundary',
elementType: 'geometry',
stylers: {
color: '#064f85'
}
},
{
featureType: 'railway',
elementType: 'all',
stylers: {
visibility: 'off'
}
},
{
featureType: 'highway',
elementType: 'geometry',
stylers: {
color: '#004981'
}
},
{
featureType: 'highway',
elementType: 'geometry.fill',
stylers: {
color: '#005b96',
lightness: 1
}
},
{
featureType: 'highway',
elementType: 'labels',
stylers: {
visibility: 'off'
}
},
{
featureType: 'arterial',
elementType: 'geometry',
stylers: {
color: '#004981'
}
},
{
featureType: 'arterial',
elementType: 'geometry.fill',
stylers: {
color: '#00508b'
}
},
{
featureType: 'poi',
elementType: 'all',
stylers: {
visibility: 'off'
}
},
{
featureType: 'green',
elementType: 'all',
stylers: {
color: '#056197',
visibility: 'off'
}
},
{
featureType: 'subway',
elementType: 'all',
stylers: {
visibility: 'off'
}
},
{
featureType: 'manmade',
elementType: 'all',
stylers: {
visibility: 'off'
}
},
{
featureType: 'local',
elementType: 'all',
stylers: {
visibility: 'off'
}
},
{
featureType: 'arterial',
elementType: 'labels',
stylers: {
visibility: 'off'
}
},
{
featureType: 'boundary',
elementType: 'geometry.fill',
stylers: {
color: '#029fd4'
}
},
{
featureType: 'building',
elementType: 'all',
stylers: {
color: '#1a5787'
}
},
{
featureType: 'label',
elementType: 'all',
stylers: {
visibility: 'off'
}
}
]
}

总结

  1. Echarts地图扩展插件bmap.min.js,将其引入后可以在echarts.series.map.coordinateSystem 中直接使用参数’bmap’ ,即: `coordinateSystem: ‘bmap’。同时在开发过程中, bmap.min.js和Echarts的版本也有关系,建议从git中下载对应的版本;
  2. 如果要操作百度地图,如加上百度地图的相关控件,可以通过 v`ar map = myChart.getModel().getComponent(‘bmap’).getBMap()获取地图对象,然后就可以按照百度地图相关操作方法进行配置,具体参见百度地图开放平台API。


标签:控件,stylers,color,地图,散点图,featureType,params,elementType,Echarts
From: https://blog.51cto.com/lockdatav/5995674

相关文章