记录使用Echarts-gl实现3D地图

一、前言

最近项目需要做个大屏展示的,开始做了第一版用户觉得地图太过于单调了,给我发了一个视频,让我参考着做。我看着视频上的地图旋转了方向、地图有标记、看着像是3D的(视频上的地图使用多个图层叠加起来、CSS样式做了旋转,echarts.series进行数据标记的)

就一股脑的往3D方面开发……各种调整就是不能在地图上做标记,在网上查资料,也没找到想要的(可能是查找的姿势不对)
期间找到过:修改geojson数据进行旋转,但是旋转后的数据不能用在3D地图上,如果地图数据有岛屿会出现阴影

也想过不使用3D地图,按照视频的方式开发一个。但是想到我都在这耗了这么久,就这么放弃有点不甘心,想起视频上使用图层叠加的方式,有了思路,琢磨起来就快了。

注:有啥问题看看文档,或者换着思路来,本文仅供参考!

二、使用组件

获取echarts.min.js方法:Echarts(图表)
Echats 配置文档:Echats 配置文档
获取echarts-gl.min.js方法:Echarts-gl(3D图表)
Echats-gl 配置文档:Echats-gl 配置文档
获取GeoJson方法:GeoJson(国内地图数据)

三、相关代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>广东省业务数据平台</title><script src="js/jquery-1.8.3.min.js"></script><script src="js/echarts.min.js"></script><script src="js/echarts-gl.min.js"></script>
</head>
<body>
<!-- 3D地图容器 -->
<div id="main" style="width: 100%; height: 900px;"></div>
<script>// 初始化图表var myChart = echarts.init(document.getElementById('main'));var guangdong = "json/440000_full.json";//文字显示坐标数据,可自行调整var mapData = [{name: '广州市', value: [113.40, 23.20],code:'440100'}, {name: '省本级', value: [113.405775, 23.502733],code:'449900'}, {name: '韶关市', value: [113.591544, 24.701322],code:'440200'}, {name: '深圳市', value: [114.1, 22.55],code:'440300'}, {name: '珠海市', value: [113.3, 22.05],code:'440400'}, {name: '汕头市', value: [116.6, 23.25],code:'440500'}, {name: '佛山市', value: [112.822717, 22.908762],code:'440600'}, {name: '江门市', value: [112.504942, 22.190431],code:'440700'}, {name: '湛江市', value: [110.004977, 21.074898],code:'440800'}, {name: '茂名市', value: [110.719229, 21.909751],code:'440900'}, {name: '肇庆市', value: [112.072529, 23.351546],code:'441200'}, {name: '惠州市', value: [114.412599, 23.199404],code:'441300'}, {name: '梅州市', value: [115.9, 24],code:'441400'}, {name: '汕尾市', value: [115.40, 22.90],code:'441500'}, {name: '河源市', value: [114.697802, 23.799996],code:'441600'}, {name: '阳江市', value: [111.575107, 21.899222],code:'441700'}, {name: '清远市', value: [112.801544, 24.041322],code:'441800'}, {name: '东莞市', value: [113.78, 22.9],code:'441900'}, {name: '中山市', value: [113.382391, 22.521113],code:'442000'}, {name: '潮州市', value: [116.7, 23.7],code:'445100'}, {name: '揭阳市', value: [115.95, 23.3],code:'445200'}, {name: '云浮市', value: [111.644439, 22.729801],code:'445300'}];//3D地图旋转主要配置var viewControl={alpha: 50, // 上下旋转的角度beta: -2, // 左右旋转的角度rotateSensitivity: 3, // 旋转操作的灵敏度panSensitivity: 3,panMouseButton: 'right',distance: 180,minAlpha: 5, // 上下旋转的最小 alpha 值。即视角能旋转到达最上面的角度。[ default: 5 ]maxAlpha: 100, // 上下旋转的最大 alpha 值。即视角能旋转到达最下面的角度。[ default: 90 ]minBeta: 25, // 左右旋转的最小 beta 值。即视角能旋转到达最左的角度。[ default: -80 ]maxBeta: 360, // 左右旋转的最大 beta 值。即视角能旋转到达最右的角度。[ default: 80 ]animation: false, // 是否开启动画。[ default: true ]animationDurationUpdate: 1000, // 过渡动画的时长。[ default: 1000 ]animationEasingUpdate: "cubicInOut" // 过渡动画的缓动效果。[ default: cubicInOut ]}$.get(guangdong, function (result) {// 注册 echarts 地图echarts.registerMap('广东省', result);var option = {backgroundColor:'#000d4a',geo3D: {map: '广东省',show: false,boxWidth: 200,boxHeight: 15, //4:没有bar. 30:有bar,bar最高度30,按比例分配高度regionHeight: 5,shading: 'lambert',top: -15,//文字悬浮高度viewControl: viewControl},series: [{type: 'map3D',map: '广东省',show: true,boxWidth: 200,boxHeight: 15, //4:没有bar. 30:有bar,bar最高度30,按比例分配高度regionHeight: 5,shading: 'lambert',itemStyle: {color: "#1CA7FC",opacity: 1,borderWidth: 3,borderColor: "#50e6fd",},emphasis: {label: {show: false,distance: 2,textStyle: {color: '#fff'}},itemStyle: {color: "#50e6fd",}},light: {main: {shadow: true,shadowQuality: 'ultra',}},viewControl: viewControl,},{type: 'scatter3D',coordinateSystem: 'geo3D',zlevel: 3,symbol: 'circle',symbolSize: 22,//圆点大小label: {normal: {show: true,position: 'right',formatter: '{b}',textStyle: {color: '#fff',fontSize: 22},}},data: mapData,itemStyle: { //坐标点颜色color: '#fff',shadowBlur: 20,shadowColor: '#fff'},emphasis: {itemStyle: { //坐标点颜色color: '#ffb800'},}}]};myChart.setOption(option);});// 点击事件(图层原因,会输出两条数据)myChart.on('click', function (params) {console.log(params);});
</script>
</body>
</html>

四、效果展示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/354003.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Warning: [antd: Menu] `children` will be removed in next major version. Please use `items` instead.

Warning: [antd: Menu] children will be removed in next major version. Please use items instead. andt 更新导致警告 https://ant.design/components/menu-cn/ 在 4.20.0 版本后&#xff0c;我们提供了 的简写方式&#xff0c;有更好的性能和更方便的数据组织方式&#x…

关于remove的用法

java中remove的用法要密切注意自己调用的remove()方法中的&#xff0c;传入的是int类型还是一个对象。 比如上面的程序&#xff0c;list1是一个长度为4的list&#xff0c;list2是1个长度为1的list&#xff0c;但是由于list2.get(0)是一个integer 对象&#xff0c;所以会直接删…

Spring中Bean初始化和销毁的多种方式

Spring中Bean初始化和销毁的多种方式 一、Bean的多种初始化方式1.PostConstruct注解2.实现InitializingBean接口3.声明init-method方法 二、Bean的多种销毁方式1.PreDestroy注解2.实现DisposableBean接口3.声明destroy-method方法 三、总结 Spring中支持在Bean的加载时声明初始…

LayaAir destroy 销毁与 removeChild 移除节点

目录 destroy 释放内存 编码示例 removeChild 移除节点 destroy 销毁节点 1、JavaScript 运行时无法启动垃圾回收器&#xff0c;要确保一个对象能够被回收&#xff0c;需要删除对该对象的所有引用。Sprite 提供的 destory() 方法会帮助设置对象内部引用为 null。 2、例如…

Javascript removeChild()不能删除全部子节点的解决办法

在Javascript中&#xff0c;只提供了一种删除节点的方法&#xff1a;removeChild()。 removeChild() 方法用来删除父节点的一个子节点。 语法&#xff1a; parent.removeChild(thisNode) 参数说明&#xff1a; 参数 说明 thisNode 当前节点&#xff0c;即要删除的节点 parent 当…

CSDN 每日一练用例数据缺失了怎么办?

CSDN 每日一练用例数据缺失了怎么办&#xff1f; 引子1、用例与结果不匹配2、阅读理解困难3、用例数据缺失 用例数据缺失&#xff0c;却有人 AC &#xff1f;神奇的 c28761 津津的储蓄计划70093 近视的小张 小结最后的吐槽 引子 老顾最近几个月经常在 CSDN 举办的周赛上浑水摸…

Spring中bean的初始化和销毁几种实现方式详解

关联博文&#xff1a;Spring中Bean的作用域与生命周期 Bean的生命周期 &#xff1a; 创建bean对象 – 属性赋值 – 初始化方法调用前的操作 – 初始化方法 – 初始化方法调用后的操作 – …-- 销毁前操作 – 销毁方法的调用。 先放一张图吧。 【1】init-method和destroy-me…

js-removeChild()

下面给大家介绍Javascript removeChild()删除节点的方法&#xff0c;具体详情如下所示&#xff1a; 在Javascript中&#xff0c;只提供了一种删除节点的方法&#xff1a;removeChild()。 removeChild() 方法用来删除父节点的一个子节点。 语法&#xff1a; parent.removeCh…

删除节点removeChild()

removeChild() 方法从子节点列表中删除某个节点。如删除成功&#xff0c;此方法可返回被删除的节点&#xff0c;如失败&#xff0c;则返回 NULL。 语法: nodeObject.removeChild(node) 参数: node &#xff1a;必需&#xff0c;指定需要删除的节点。 我们来看看下面代码&a…

Js removeChild、addChild

1. <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>添加删除记录练习升级</title><link rel"stylesheet" type"text/css" href"ex_2_style/css.css&qu…

【注意】js 里面 removeChild 使用的坑

这有坑啊&#xff0c;使用removeChild 循环删除 子元素们的时候 是【0】而不是【i】 这是因为 你每次删完一个 子元素们的 下标就会发生改变 比如 allSpan【0】 allSpan【1】 removeChild(allSpan【0】) 以后 &#xff0c;allSpan【1】 就不再是 allSpan【1】了&#xff0c;…

关于removeChild() 方法

removeChild() 方法 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具与关键技术&#xff1a; JS 撰写时间&#xff1a;2021/7/8 注意红色箭头指向内容&#xff0c;本文将分为6张图片&#xff0c;并按从上到下顺序操作 1.我们先简…

4.C++多线程-- unique_lock(类模板)

1.unique_lock 1. unique_lock<mutex> myUniLock(myMutex); 完全可以取代lock_guard 2. unique_lock 也可以使用----std::adopt_lock 3.使用adopt_lock&#xff0c;之前要先使用lock. 4.std::chrono::milliseconds my_sleepTime(20000)//20000毫秒 std::this_thread:…

打开浏览器的同时会在主页外同时打开芒果TV,抖音等网站

问题&#xff1a;每次打开谷歌浏览器的同时会同时打开芒果TV&#xff0c;抖音等网站。导致每次都要进行网页关闭&#xff0c;非常麻烦。 解决&#xff1a;在扩展程序中有一个叫做“省钱购”的程序&#xff0c;只需要将其移走就可以了。 扩展程序的位置&#xff1a;自定义及控…

最新超漂亮UI仿芒果TV听书网站模板双端+苹果CMS内核

正文: 苹果cms超漂亮UI高仿芒果TV听书网站模板带手机端。 手机版修改logo&#xff0c;ting_wap/images/logo.png 电脑版修改logo&#xff0c;ting_pc/img/logo.png 编辑推荐后台推荐5颗星&#xff0c;新势力/热播榜单后台推荐9颗星。 程序: wwyfeu.lanzoum.com/iQ0F00gbt…

芒果播放器介绍

芒果播放器 芒果全能播放器能播放所有格式的视频、音频文件、以及主流图片文件。短小精悍、简洁明了、绿色&#xff0c;无广告&#xff0c;其FLASH播放比暴风音影更真实。原本为教育教学服务&#xff0c;广大师生反应较好&#xff0c;现全面推广。 【1.1版下载地址】 http://…

非常简单下载芒果tv视频的方法(无需安装任何软件)

1、打开芒果tv网站&#xff0c;找到需要下载的视频地址比如&#xff1a;https://www.mgtv.com/b/328606/5533377.html?fpase 2、打开网页&#xff1a;https://www.parsevideo.com/mgtv/ 3、输入需要分析的视频地址&#xff1a; 4、分析结果如下&#xff0c;并点击第二行的下…

最新芒果TV视频下载方法-马赛克视频助手

芒果TV是一款资源丰富的互联网视频平台。它除了可以看视频外&#xff0c;还可以将这些视频下载下来。但官方是不支持视频下载的&#xff0c;那么芒果TV该怎么下载视频么&#xff1f;接下来就让我们一起去看看吧。 今天小编就教大家如何把上面喜欢的视频下载下来 1.这里我们需…

芒果TV 2021 互联网人才招聘

长沙&#xff0c;关键词是什么&#xff1f; 小龙虾、臭豆腐 马栏山 中国最具幸福感城市 芒果TV&#xff0c;关键词是什么&#xff1f; 天生青春&#xff0c;NO.1 中国互联网百强 世界媒体五百强 理想&#xff0c;非得在北上广实现么&#xff1f; 其实&#xff0c;追梦的路上不一…