Echarts4+EchartsGL 3D迁徙图(附源码)

最近遇到些Echarts迁徙图问题,在实现二维地图的迁徙图后开始开发3D迁徙图,在网上一查,发现3D版本迁徙图资料较少,自己研究并借鉴一些资料后写了一个小demo,希望能帮大家少走些弯路,共同学习。

一、效果图
星空背景为canvas开发,此处不提供相关代码
二、准备引用文件
1、Echarts:Echarts4下载
2、Echarts GL:Echarts GL1下载
3、地图文件下载,js版本或json版本均可

三、代码(以json地图为例)
1、文件引用

<script src="~/Scripts/jquery-3.3.1.min.js"></script>
<script src="~/Scripts/echarts4.js"></script>
<script src="~/Scripts/echarts-gl.js"></script>

2、html代码

<body> 
	<div id="mapBox"></div>
</body

3、js代码

<script type="text/javascript">
//从json文件中取出地图信息
$.get('/guangdong.json', function (chinaJson) {
            echarts.registerMap('jiangmen', chinaJson);
            var mapBoxEchart = echarts.init(document.getElementById('mapBox'));
            mapBoxEchart.setOption({
geo3D: {
		map: 'jiangmen',
                    type: 'map',
                    boxHeight: 2.2,
                    regionHeight: 2,
                    roam: true,
                    label: {
                        //地图上是否显示市区名称
                        normal: {
                            show: true,
                            color: "#FFF76D"
                        },
                        emphasis: {
                            show: true,
                            color: "#FFF76D"
                        }
                    },
                    itemStyle: {
                        //color: '#00287A',
                        color:"#2E55FC",
                        borderColor: '#00287A', //省份的边框颜色 330867
                        borderWidth: 1.5, //省份的边框宽度
                        opacity: 0.5
                    },
                    emphasis: {
                        color: 'rgba(10, 21, 67, 0.3)',
                        borderWidth: 1,
                        borderColor: '#3fdaff',
                        //areaColor: "#7DC3DE",
                        shadowColor: '#fff',
                        opacity: 0.5,
                        shadowBlur: 30
                    },
                    light: { //光照阴影
                        main: {
                            color: '#2F85DC',     //光照颜色
                            intensity: 2,       //光照强度
                            shadowQuality: 'high',   //阴影亮度
                            shadow: true,       //是否显示阴影
                            alpha: 50,
                            beta: 10
                        },
                        ambient: {
                            intensity: 0
                        }
                    },
		postEffect: {
		             enable: true,
		              bloom: {
		                   enable: true
		                        }
		                    },
		                    groundPlane: {
                        show: false
                    },
                    shading: 'realistic',
                    zoomSensitivity: 10 //缩放灵敏度
		                    },
series: [
{
//配置路径
			type: 'lines3D',
			coordinateSystem: 'geo3D',	
			polyline: 'true',
		         blendMode: 'lighter',
                        zlevel: 102,
                        effect: {
                            show: true,
                            trailWidth: 3,
                            trailOpacity: 0.5,
                            trailLength: 0.2,
                            constantSpeed: 5
                        },
                        lineStyle: {
                            color: '#FFB728',
                            opacity: 0.8,
                            width: 1.5
                        },
	data: [
                            {
                                coords: [[113.149649, 22.617641], [112.88089,22.583612]],
                                // 数据值
                                value: 100,
                                // 数据名
                                name: '测试一',
                                // 线条样式
                                lineStyle: {}
                            }, {
                                coords: [[112.316858, 22.186088], [112.88089,22.583612]],
                                // 数据值
                                value: 100,
                                // 数据名
                                name: '测试二',
                                // 线条样式
                                lineStyle: {}
                            }
                        ]
},{
	//配置位置标记点
	  type: 'scatter3D',
            coordinateSystem: 'geo3D',
            symbol: 'circle',
            symbolSize: 15,
            blendMode: 'lighter',
            zlevel: 11,
            label: {
                show: true,
                position: 'top',
                formatter: '{b}',
                textStyle: {
                    color: '#000',
                    fontFamily: "Microsoft YaHei",
                }
            },
            itemStyle: {
                color: '#a8edea' //标记颜色
            },
            data: [{ name: '测试一', value: [113.149649, 22.617641, 100] },
                { name: '测试二', value: [112.316858, 22.186088, 100] }]
},{
	//配置攻击点
	  type: 'scatter3D',
            coordinateSystem: 'geo3D',
            symbol: 'pin', symbolSize: function (val) {
                var ret;
                if ((val[2] >= 0) && (val[2] < 1000)) {
                    ret = 50;
                } else {
                    ret = 65;
                }
                return ret;
            },
            blendMode: 'lighter',
            zlevel: 11,
            label: {
                show: true,
                position: 'top',
                //formatter: '{b}',
                formatter: function (params) {
                    var ret = params.value[2];
                    return ret;
                },
                textStyle: {
                    color: '#000',
                    fontFamily: "Microsoft YaHei",
                    fontWeight: 'bold'
                }
            },
            itemStyle: {
                show: true,
                color: '#eb4f38'
            },
            data: [{ name: '中心', value: [112.88089,22.583612, 200] }]
}
]

});
            });
</script>

4、总结
要实现Echarts 3D迁徙图主要是引用全相关文件并进行相关配置,注意使用正确的数据结构即可,希望能对大家略有帮助。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
你想了解关于 Mapbox GLEcharts 迁徙的相关内容吗?Mapbox GL 是一个开源的地图绘制库,可以用来创建交互式的地图应用程序。Echarts 是一个基于 JavaScript 的数据可视化库,可以用来展示各种类型的表,包括迁徙。 要使用 Mapbox GLEcharts 创建迁徙,你可以按照以下步骤进行操作: 1. 首先,引入 Mapbox GLEcharts 的相关库文件到你的项目中。你可以从官方网站或使用包管理工具如npm或yarn来安装它们。 2. 创建一个包含地图容器的 HTML 元素,在这个容器中将显示迁徙。你可以使用 Mapbox GL 提供的 API 来初始化地图和设置样式。 3. 准备迁徙数据。迁徙数据通常包含起始地点、目标地点和迁徙人数等信息。你可以将这些数据存储在一个 JSON 文件中,或者通过网络请求从后端获取。 4. 在 JavaScript 代码中,使用 Echarts 的 API 创建一个迁徙实例。通过配置项,你可以设置迁徙的样式、数据源和交互行为等。 5. 将迁徙实例绑定到地图容器中,这样迁徙就会在地图上进行渲染。 以下是一个简单的示例代码,演示了如何使用 Mapbox GLEcharts 创建迁徙: ```html <!DOCTYPE html> <html> <head> <title>Mapbox GL + Echarts 迁徙</title> <meta charset="utf-8" /> <style> #map { width: 800px; height: 600px; } </style> </head> <body> <div id="map"></div> <script src="path/to/mapbox-gl.js"></script> <script src="path/to/echarts.js"></script> <script> // 初始化地图 mapboxgl.accessToken = 'your-access-token'; var map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/streets-v11', center: [lon, lat], zoom: 10 }); // 准备迁徙数据 var migrationData = [ { from: [fromLon1, fromLat1], to: [toLon1, toLat1], count: 100 }, { from: [fromLon2, fromLat2], to: [toLon2, toLat2], count: 200 }, // ... ]; // 创建迁徙实例 var chartDom = document.getElementById('map'); var myChart = echarts.init(chartDom); var option = { series: [{ type: 'lines', data: migrationData.map(function (item) { return { coords: [item.from, item.to], value: item.count }; }), // 其他配置项... }] }; myChart.setOption(option); // 将迁徙绑定到地图容器中 map.on('load', function () { var canvas = myChart.getCanvas(); var container = map.getCanvasContainer(); container.appendChild(canvas); }); </script> </body> </html> ``` 请注意,上述代码中的一些参数如 access token、经纬度等需要根据你的实际情况进行设置。 希望这个回答能够帮到你!如果有任何问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值