echarts 3d中国地图飞行线

news2025/2/13 23:37:30

一、3D中国地图
1. 一定要使用 echarts 5.0及以上的版本;

2. echarts 5.0没有内置中国地图了。点击下载 china.json;

3. 一共使用了四层地图。
(1)第一层是中国地图各省细边框和展示南海诸岛;
(2)第二层是实现中国地图外边框的宽度和阴影,与第一层完全重合,隐藏南海诸岛;
(3)第三层和第四层形成一个底层3d立体,使用top往下偏移,隐藏南海诸岛。

// html
<div class="china-map" ref="chinaMap"></div>
// 引入资源
import * as echarts from 'echarts'
import china from '@/assets/json/china.json'
 
// 方法
chinaEchart(){
    //注册地图,这个特别重要
    echarts.registerMap('china', china)
    let myChart = echarts.init(this.$refs.chinaMap);
    //echart 配制option  
      var options= {
        tooltip: {
          show:true,
          triggerOn: "mousemove",   //mousemove、click
          padding:[4,8],
          borderWidth:1,
          borderColor:'#409eff',
          backgroundColor:'rgba(255,255,255,0.7)',
          textStyle:{
            color:'#000000',
            fontSize:13
          },
          formatter: function(e) {
            return e.name;
          }
        },
        geo: [
          // 第一层
          {
            map: "china",
            z: 3,
            zoom: 1.2,
            aspectScale: 0.85,
            roam: false,
            top: '10%',
            layoutSize: "100%", //保持地图宽高比
            regions: [
              { // 隐藏南海诸岛,因为顶层已经添加过了
                name: '南海诸岛',
                itemStyle: {
                  borderWidth: 0.5,
                  shadowBlur: 0,
                  borderColor: '#61aacb',
                  areaColor: '#104584'
                }
              }
            ],
            itemStyle:{
              borderColor: '#c8feff',
              borderWidth: 0.5,
              shadowBlur: 3,
              shadowColor: '#66edff',
              areaColor: '#0862db'
            },
            emphasis:{
              itemStyle:{
                shadowBlur: 10,
                borderWidth: 1,
                areaColor: '#2da9ff',
              },
              label:{
                show:false,
                color: '#ffffff',
              }
            },
            select:{
              itemStyle:{
                shadowBlur: 10,
                borderWidth: 1,
                areaColor: '#2da9ff',
              },
              label:{
                color: '#ffffff',
              }
            }
          },
          // 第二层
          {
            map: "china",
            z: 2,
            zoom: 1.2,
            aspectScale: 0.85,
            roam: false,
            silent:true,
            top: '10%',
            layoutSize: "100%", //保持地图宽高比
            regions: [
              { // 隐藏南海诸岛,因为顶层已经添加过了
                name: '南海诸岛',
                itemStyle: {
                  opacity: 0 // 为 0 时不绘制该图形
                },
                label: {
                  show: false
                }
              }
            ],
            itemStyle:{
              borderColor: '#d8feff',
              borderWidth: 3,
              shadowBlur: 10,
              shadowColor: '#22a1ff',
              areaColor: '#0862db',
              shadowOffsetX: 0,
              shadowOffsetY: 8
            },
          },
          // 第三层
          {
            map: "china",
            z: 1,
            zoom: 1.2,
            aspectScale: 0.85,
            top: '11.5%',
            silent:true,
            layoutSize: "100%", //保持地图宽高比
            itemStyle:{
              borderColor: '#c8feff',
              borderWidth: 1,
              shadowBlur: 0,
              shadowColor: '#99c4ff',
              areaColor: '#4ebaff',
            },
            regions: [
              { // 隐藏南海诸岛,因为顶层已经添加过了
                name: '南海诸岛',
                itemStyle: {
                  opacity: 0 // 为 0 时不绘制该图形
                },
                label: {
                  show: false
                }
              }
            ],
          },
          // 第四层
          {
            map: "china",
            z: 0,
            zoom: 1.2,
            aspectScale: 0.85,
            top: '12%',
            silent:true,
            layoutSize: "100%", //保持地图宽高比
            itemStyle:{
              borderColor: '#66edff',
              borderWidth: 2,
              shadowBlur: 20,
              shadowColor: '#4d99ff',
              areaColor: '#1752ad',
              shadowOffsetX: 0,
              shadowOffsetY: 8
            },
            regions: [
              { // 隐藏南海诸岛,因为顶层已经添加过了
                name: '南海诸岛',
                itemStyle: {
                  opacity: 0 // 为 0 时不绘制该图形
                },
                label: {
                  show: false
                }
              }
            ],
          },
        ],
        series: [
          // 地图
          {
            type: "map",
            geoIndex: 0,
            data: []
          }
        ]
      }
      myChart.setOption(options);
}
二、地图飞线
1. 飞线有一对多,多对多;

2. 起点和终点使用effectScatter标点。

// 起点名称和经纬度
const fromName = '重庆市'
const fromLatlng = [106.33,29.35]
 
// 终点名称和经纬度
const geoCoordMap = [
    { name: '盘锦市', latlng: [120.93141287481329, 40.93448132827849]},
    { name: '沧州市', latlng: [116.71809759843096, 37.96769678343516]},
    { name: '东营市', latlng: [118.29234782217573, 37.44294670885357]},
    { name: '大连市', latlng: [121.26593157813807, 38.886009413952934]},
    { name: '沈阳市', latlng: [122.220947193165, 41.64094730550629]},
    { name: '北京市', latlng: [116.07673639616456, 40.110426254643315]},
    { name: '白银市', latlng: [101.09220648866805, 36.568363251217576]},
    { name: '石家庄市', latlng: [115.20215293852858, 38.886009413952934]}
]
 
//飞线数据
const linesData = geoCoordMap.map(row=>{
    return {
        coords: [
            fromLatlng,
            row.latlng
        ],
        fromName: fromName,
        toName: row.name,
        lineStyle: {
            color: '#FFE747',
            curveness: 0.2
        }
    }
})
 
// 终点标点数据
let effectData = geoCoordMap.map(row=>{
    return {
        value: row.latlng,
        name: row.name,
        lineStyle: {
            color: '#FFE747'
        }
    }
})
 
// series新增飞线
series: [
     // 飞线
     {
            type: 'lines',
            zlevel: 5,
            effect: {
              show: true,
              period: 5, //箭头指向速度,值越小速度越快
              trailLength: 0, //特效尾迹长度[0,1]值越大,尾迹越长重
              symbol: 'arrow', //ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
              symbolSize: 8, //图标大小
            },
            lineStyle: {
              color: '#FFE747',
              type: 'dashed',
              width: 2, //尾迹线条宽度
              opacity: 1, //尾迹线条透明度
              curveness: 0.3 //尾迹线条曲直度
            },
            data: linesData,
            markPoint:{
              symbol: 'circle', //ECharts 提供的标记类型包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
              symbolSize: 8, //图标大小
            }
    },
    //起点
    {
            type: 'effectScatter',
            coordinateSystem: 'geo',
            zlevel: 6,
            rippleEffect: {
                //涟漪特效
                period: 4, //动画时间,值越小速度越快
                brushType: 'stroke', //波纹绘制方式 stroke, fill
                scale: 4 //波纹圆环最大限制,值越大波纹越大
            },
            label: {
              show: false,
              position: 'right', //显示位置
              offset: [5, 0], //偏移设置
              formatter: '{b}', //圆环显示文字
              color: 'red'
            },
            symbol: 'circle',
            symbolSize: function(val) {
              return 10; //圆环大小
            },
            itemStyle: {
              show: false,
              color: '#ff8400',
            },
            data: [{value: fromLatlng,name: fromName}]
          },
          // 终点
          {
            type: 'effectScatter',
            coordinateSystem: 'geo',
            zlevel: 6,
            rippleEffect: {
                //涟漪特效
                period: 4, //动画时间,值越小速度越快
                brushType: 'stroke', //波纹绘制方式 stroke, fill
                scale: 4 //波纹圆环最大限制,值越大波纹越大
            },
            label: {
              show: false,
              position: 'right', //显示位置
              offset: [5, 0], //偏移设置
              formatter: '{b}', //圆环显示文字
              color: 'red'
            },
            symbol: 'circle',
            symbolSize: function(val) {
              return 6; //圆环大小
            },
            itemStyle: {
              show: false,
              color: '#befaff',
            },
            data: effectData
}]

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

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

相关文章

在本地校验密码或弱口令 (windows)

# 0x00 背景 需求是验证服务器的弱口令&#xff0c;如果通过网络侧校验可能会造成账户锁定风险。在本地校验不会有锁定风险或频率限制。 # 0x01 实践 ## 1 使用 net use 命令 可以通过命令行使用 net use 命令来验证本地账户的密码。打开命令提示符&#xff08;CMD&#xff0…

【Elasticsearch】Elasticsearch检索方式全解析:从基础到实战(二)

接着上一篇文章&#xff1b;我们继续来研究es的复杂检索 文章目录 (1) bool用来做复合查询&#xff08;2&#xff09;Filter【结果过滤】&#xff08;3&#xff09;term&#xff08;4&#xff09;Aggregation&#xff08;执行聚合&#xff09; (1) bool用来做复合查询 复合语…

游戏引擎学习第96天

讨论了优化和速度问题&#xff0c;以便简化调试过程 节目以一个有趣的类比开始&#xff0c;提到就像某些高端餐厅那样&#xff0c;菜单上充满了听起来陌生或不太清楚的描述&#xff0c;需要依靠服务员进一步解释。虽然这听起来有些奇怪&#xff0c;但实际上&#xff0c;它反映…

(Xshell 8 + Xftp 8)下载安装miniconda至服务器指定目录+配置虚拟环境

一一一一 Xshell 8 Xftp 8均已登录&#xff0c;miniconda.sh安装包已经放在服务器指定目录中 二二二二 赋予脚本执行权限 chmod x Miniconda3-latest-Linux-x86_64.sh安装miniconda ./Miniconda3-latest-Linux-x86_64.sh -p /data1/huyan/zhangyifeng/miniconda3一直Enter…

多机器人系统的大语言模型:综述

25年2月来自 Drexel 大学的论文“Large Language Models for Multi-Robot Systems: A Survey”。 大语言模型 (LLM) 的快速发展为多机器人系统 (MRS) 开辟新的可能性&#xff0c;从而增强通信、任务规划和人机交互。与传统的单机器人和多智体系统不同&#xff0c;MRS 带来独特…

Python----PyQt开发(PyQt基础,环境搭建,Pycharm中PyQttools工具配置,第一个PyQt程序)

一、QT与PyQT的概念和特点 1.1、QT QT是一个1991年由The Qt Company开发的跨平台C图形用户界面应用程序开发 框架&#xff0c;可构建高性能的桌面、移动及Web应用程序。也可用于开发非GUI程序&#xff0c;比如 控制台工具和服务器。Qt是面向对象的框架&#xff0c;使用特殊的代…

MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32

MT6835 21位 磁编码器 SPI 平台无关通用驱动框架 STM32 1. 获取代码&#xff1a;2. 加入你的项目2.1 以 STM32 为例:2.2 以 ESP-IDF 为例: 3. 对接 API3.1 以 STM32 为例&#xff1a; 4. 更多函数说明5. 写入 EEPROM 示例 MT6835 Framework 纯C语言实现&#xff0c;跨平台&…

嵌入式WebRTC压缩至670K,目标将so动态库压缩至500K,.a静态库还可以更小

最近把EasyRTC的效果发布出去给各大IPC厂商体验了一下&#xff0c;直接就用EasyRTC与各个厂商的负责人进行的通话&#xff0c;在通话中&#xff0c;用户就反馈效果确实不错&#xff01; 这两天有用户要在海思hi3516cv610上使用EasyRTC&#xff0c;工具链是&#xff1a;gcc-2024…

Rhel Centos环境开关机自动脚本

Rhel Centos环境开关机自动脚本 1. 业务需求2. 解决方法2.1 rc.local2.2 rc.d2.3 systemd2.4 systemd附着的方法2.5 tuned 3. 测试 1. 业务需求 一台较老的服务器上面业务比较简单,提供一个简单的网站,但已经没有业务的运维人员. 想达到的效果: 由于是非标准的apache或者nginx…

phpipam1.7安装部署

0软件说明 phpipam是一个开源Web IP地址管理应用程序&#xff08;IPAM&#xff09; phpipam官网&#xff1a;https://www.phpipam.net/ 1安装环境 操作系统&#xff1a;Rocky Linux9.5x86_64 phpipam版本&#xff1a;1.7 php版本&#xff1a;8.0.30 数据库版本&#xff1a…

正泰中间电磁继电器【8脚10A】DC24V 待机功率

需求&#xff1a;继电器能耗测试。 1.连接24V2A的电源&#xff0c; 2. 稳定功率为 1.4W 3. 正泰中间电磁继电器【8脚10A】直流DC24V 注&#xff1a;联通时电磁继电器会轻微发热 4.电磁继电器的工作原理基于电流的磁效应 电磁激励&#xff1a;电磁继电器主要由线圈、铁芯、衔…

Mac上搭建宝塔环境并部署PHP项目

安装Docker Desktop》搭建Centos版本的宝塔环境》部署PHP项目 1. 下载Docker for mac 软件&#xff1a;https://www.docker.com/ 或使用终端命令&#xff1a;brew install --cask --appdir/Applications docker 2. 使用命令安装宝塔环境的centos7系统&#xff1a; docker pul…

win11 终端乱码导致IDE 各种输出也乱码

因为 win11 终端乱码导致IDE 各种输出也乱码导致作者对此十分头大。所以研究了各种方法。 单独设置终端编码对 HKEY_CURRENT_USER\Console 注册表进行修改对 HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processo 注册表进行修改使用命令[Console]::OutputEncoding [Syst…

LabVIEW用户界面(UI)和用户体验(UX)设计

作为一名 LabVIEW 开发者&#xff0c;满足功能需求、保障使用便捷与灵活只是基础要求。在如今这个用户体验至上的时代&#xff0c;为 LabVIEW 应用程序设计直观且具有美学感的界面&#xff0c;同样是不容忽视的关键任务。一个优秀的界面设计&#xff0c;不仅能提升用户对程序的…

23、深度学习-自学之路-激活函数relu、tanh、sigmoid、softmax函数的正向传播和反向梯度。

在使用这个非线性激活函数的时候&#xff0c;其实我们重点还是学习的是他们的正向怎么传播&#xff0c;以及反向怎么传递的。 如下图所示&#xff1a; 第一&#xff1a;relu函数的正向传播函数是&#xff1a;当输入值&#xff08;隐藏层&#xff09;值大于了&#xff0c;就输出…

【matlab优化算法-16期】基于遗传算法的电热气及储能综合优化项目实践

电热气及储能综合优化项目实践 一、前言 随着能源转型和可持续发展的推进&#xff0c;综合能源系统的优化逐渐成为研究热点。本文介绍了一个电热气及储能综合优化项目&#xff0c;旨在通过优化算法实现多能源系统的协同运行&#xff0c;提高能源利用效率&#xff0c;降低运行…

springboot239-springboot在线医疗问答平台(源码+论文+PPT+部署讲解等)

&#x1f495;&#x1f495;作者&#xff1a; 爱笑学姐 &#x1f495;&#x1f495;个人简介&#xff1a;十年Java&#xff0c;Python美女程序员一枚&#xff0c;精通计算机专业前后端各类框架。 &#x1f495;&#x1f495;各类成品Java毕设 。javaweb&#xff0c;ssm&#xf…

DeepSeek系统崩溃 | 极验服务如何为爆火应用筑起安全防线?

引言 极验服务让您的产品站在风口之时&#xff0c;不必担心爆红是灾难的开始&#xff0c;而是期待其成为驱动持续创新的全新起点。 01现象级狂欢背后&#xff0c;你的业务安全防线抗得住吗&#xff1f; “近期DeepSeek线上服务受到大规模恶意攻击&#xff0c;注册可能繁忙&am…

java后端开发day15--字符串(一)

&#xff08;以下内容全部来自上述课程&#xff09; 1.API &#xff08;Application Programming Interface 应用程序编程接口&#xff09; 1.简单理解 简单理解&#xff1a;API就是别人已经写好的东西&#xff0c;我们不需要自己编写&#xff0c;直接使用即可。 Java API&…

vue项目 Axios创建拦截器

Axios 1. Axios 和 Ajax 简介2. Axios 和 Ajax 的区别3. 从 按钮 到 Axios请求后端接口的 大致顺序 1. Axios 和 Ajax 简介 Ajax&#xff08;Asynchronous JavaScript and XML&#xff09; 不是一种技术&#xff0c;而是一个编程技术概念&#xff0c;核心是通过 XMLHttpReques…