全网最酷南极路线图
雪龙2号航线
这个是36次南极考察队雪龙2号的路线图。
问题来了,请问要做一个这样三维可交互式的地图总共分几步。
答案是三步。
第一步:打开公众号
第二步:认真看完本篇内容,并下载全部脚本及素材
第三步:关上公众号
ECharts
话不多说直接讲,这种类型的页面是依托ECharts制作的。
Echarts是什么?
下面是来自官网(https://echarts.apache.org/zh/index.html)的介绍:ECharts,一个使用 JavaScript 实现的开源可视化库,提供直观,交互丰富,可高度个性化定制的数据可视化图表。
展示方式非常丰富,常规的有折线图、柱状图、散点图、饼图、K线图,用于统计的盒形图,用于地理数据可视化的地图、热力图、线图,用于关系数据可视化的关系图、treemap、旭日图,多维数据可视化的平行坐标,还有用于 BI 的漏斗图,仪表盘,并且支持图与图之间的混搭。
里面很多类型的图都可以用作地学的可视化中。像GL矢量场图可以做风、浪的可视化;散点图可以做站点的可视化,比如空气质量;热力图可以做格点数据的二维展示,比如温度。
3D地球
今天先介绍ECharts的3D地球。
官网有一个实例,感兴趣的同学可以先去看看。
具体如何自己搭建?一个html,一个js脚本就够了,操作如下。
首先新建一个html文件,比如叫echarts_map.html
,将下面脚本复制进去。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>ECharts</title>
<!-- 引入 echarts.js -->
<script src="echarts.min.js"></script>
<script src="echarts-gl.min.js"></script>
</head>
<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="width: 2000px;height:1000px;"></div>
<!-- 加载ECharts准备一个具备大小(宽高)的Dom -->
<script src="echarts3d.js"></script>
</body>
</html>
上面html中引入的echarts.min.js
和echarts-gl.min.js
都是ECharts的核心功能。echarts3d.js
是我们主要配置可视化方式的主要文件。新建一个名为echarts3d.js
的文件将下面的脚本复制进去。
var myChart = echarts.init(document.getElementById('main'));
var canvas = document.createElement('canvas');
var mapChart = echarts.init(canvas, null, {
width: 4000, height: 2000
});
mapChart.setOption({
series : [
{
type: 'map',
map: 'world',
name: 'world_map',
itemStyle: {
areaColor: 'rgba(255, 253, 250, 0)', //地图区域颜色#146d97
borderColor: 'rgba(255, 253, 250, 1)', //地图区域边线颜色
},
// 绘制完整尺寸的echarts实例
top: 0, left: 0,
right: 0, bottom: 0,
boundingCoords: [[-180, 90], [180, -90]]
}
]
});
// 指定图表的配置项和数据
var option = {
backgroundColor: '#000',
globe: {
baseTexture: "./earth.jpg",
heightTexture: './bathymetry_bw_composite_4k.jpg',
displacementScale: 0.1,
shading: 'lambert',
environment: './starfield.jpg',
viewControl:{
autoRotate: false,
// 定位到上海
targetCoord: [121.47, 31.23]
},
light: {
ambient: {
intensity: 0.1
},
main: {
intensity: 1.5
}
},
layers: [{
type: 'blend',
blendTo: 'emission',
texture: './night.jpg'
}, {
type: 'overlay',
texture: './clouds.png',
shading: 'lambert',
distance: 5
}],
},
series: [
{
type: 'lines3D',
effect: {
show: true,
period: 3,//速度
trailLength: 0.5//尾部阴影
},
lineStyle: {//航线的视图效果
color: '#9ae5fc',
width: 3,
opacity: 0.9
},
// convertData 在这里添加你自己的路线数据
data: [[[121.47, 31.23], [123.19, 31.1]],
[[123.19, 31.1], [123, 28.5]],
[[123, 28.5], [116.75, 22.33]],
[[116.75, 22.33], [114.05, 22.55]],
[[114.05, 22.55], [122, 19.83]],
[[122, 19.83], [148.47, 0]]]
}
]
}
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option);
js脚本中加载了几张图片,包括地图、云、城市灯光等一些图片,我把他们和脚本打包到一起,放到文末。把所有文件放在一个文件夹下,用IE浏览器打开html就能看到你自己的地球了(用Chrome浏览器一直没法成功加载,还没找到原因)。
后面有机会给大家介绍Python版的ECharts:pycharts,用来做在网页上做交互式的展示特别合适。
参考内容
- https://echarts.apache.org/zh/index.html
脚本链接
脚本链接:https://pan.baidu.com/s/1ypP64yOZc5pOAOHm362jcA
提取码:x9p6
- 修改WordPress分类目录和页面链接以斜杠/结尾,附nginx对应的301跳转设置方法
- 彻底弄懂 Http 缓存机制 - 基于缓存策略三要素分解法
- 解决Crayon Syntax Highlighter代码高亮与fancybox图片暗箱冲突问题
- 移动搜索SEO:网站移动适配之Meta标注、移动跳转终结篇
- http加速器Varnish的vcl配置小记(lnmp环境)
- 关于网站图标favicon.ico那点事儿,你造吗?
- 跨平台 ListView 性能优化
- 打造“微信小程序”组件化开发框架
- 解决Linux下MySQL启动错误Starting MySQL.Manager of pid-file quit without updating file.[FAILED]
- 美团大众点评 Hybrid 化建设
- Linux系统date命令无法修改或同步时间的解决办法
- Redex 初探与 Interdex:Andorid 冷启动优化
- JS延时判断,改善中国博客联盟展示导航自动点击的灵敏度
- RecyclerView 必知必会
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 元数据管理|Hive Hooks和Metastore监听器介绍
- Go 每日一库之 fyne
- 实时数仓|基于Flink1.11的SQL构建实时数仓探索实践
- 使用 fyne 编写一个计算器程序
- Go 每日一库之 negroni
- Go 每日一库之 cli
- Go 每日一库之 cron
- Go 每日一库之 mapstructure
- Go 每日一库之 jobrunner
- 在本地运行 fyne 官网
- Python-科学计算-pandas-12-df单列计算
- JDK15就要来了,你却还不知道JDK8的新特性!
- 八佰:用Python看知乎 vs 豆瓣的战斗
- 学习Python你必须了解的lenna小姐姐
- 10行python代码制作笑死人不偿命的倒放gif