vue3使用mars3d实现地图轮播高亮,且每个区域颜色不一样

效果图(珙县就是轮播高亮的效果)

思路:初始化一张完整的地图,然后定时器去挨个生成每个县上的地图,并且覆盖在原来的位置,每到一定的时间,就清除之前生成高亮图并且生成下一张高亮图
在这里插入图片描述

如何引入地图 上篇文章已详细发过

父组件

获取地图的数据,并且在数据中加上color对应的颜色,并且传递给地图渲染的方法。
map是我初始化进来定义的
在这里插入图片描述
在这里插入图片描述

子组件(详情我放在代码的注释中)

// 定义轮播到第几个地图数据
let cyclicNum = ref(0);
// 定时器
let timer = ref();
//  val就是地图的数据  map就是初始化定义的map
const addDataPopulation = (val, map) => {// 先清除已经存在再添加if (map.getLayerById("childLineLayer")) {map.removeLayer(map.getLayerById("childLineLayer"));}// 清除一下定时器if (timer.value) {clearInterval(timer.value);}// 生成最底下的地图const childLineLayer = new mars3d.layer.GeoJsonLayer({id: "childLineLayer",name: "数据总体概览",data: val,symbol: {type: "polygon",styleOptions: {fill: true,// 定义每个区域的颜色color: "{color}",// 边界outline: true,outlineStyle: {width: 3,color: "#fff"},// 高亮-鼠标移入区块高亮的方式,可以是click 也可以是hoverhighlight: {type: "click",fill: true,color: "#22906a",outline: true,outlineStyle: {width: 8,color: "#3ee9d5",// 要加高度,不然原地图上的颜色没法覆盖了addHeight: 100}},// 名字-区块上显示的名字label: {text: "{name}",font_size: 20,font_family: "楷体",outline: true,outlineColor: "#000",outlineWidth: 3,background: false,backgroundColor: "#fff",backgroundOpacity: 0.1,font_weight: "normal",font_style: "normal",scaleByDistance: true,scaleByDistance_far: 20000000,scaleByDistance_farValue: 0.1,scaleByDistance_near: 1000,scaleByDistance_nearValue: 1,distanceDisplayCondition: false,distanceDisplayCondition_far: 10000,distanceDisplayCondition_near: 0,visibleDepth: false}}}});map.addLayer(childLineLayer);// 下钻聚焦childLineLayer.flyTo({scale: 1.5});// 高亮轮播-使用定时器timer.value = setInterval(() => {cyclicHighlighting(val, map);}, 3500);// 点击事件-下钻childLineLayer.on(mars3d.EventType.dblClick, function (event) {if (map.getLayerById("cyclicHighlightingLayer")) {map.removeLayer(map.getLayerById("cyclicHighlightingLayer"));}let req = {parentCode: event.graphic.options.attr.adcode,name: event.graphic.options.attr.name};emit("nextLevelFun", req);});// 绑定事件-点击高亮childLineLayer.on(mars3d.EventType.click, function (e) {clearInterval(timer.value);if (map.getLayerById("cyclicHighlightingLayer")) {map.removeLayer(map.getLayerById("cyclicHighlightingLayer"));}// console.log("鼠标移入", e.propagatedFrom.options.attr);emit("highlightingFun", e.propagatedFrom.options.attr);});// 绑定事件-取消高亮childLineLayer.on(mars3d.EventType.highlightClose, function () {timer.value = setInterval(() => {cyclicHighlighting(val, map);}, 3500);console.log("鼠标移出");});
};// 循环高亮 val和map 同上
const cyclicHighlighting = (val, map) => {// 判断高亮的地图区块是否存在if (map.getLayerById("cyclicHighlightingLayer")) {map.removeLayer(map.getLayerById("cyclicHighlightingLayer"));}// 当区块的数据等于长度的时候 表示一轮已经轮播完了,要重头开始轮播if (cyclicNum.value >= val.features.length) {cyclicNum.value = 0;}// 生成高亮区块的地图数据let dataHighlighting = {features: [val.features[cyclicNum.value]],type: "FeatureCollection"};// 我这儿是需要高亮数据做联动,所以返回给父组件,如果没有需要 删除即可emit("highlightingFun", val.features[cyclicNum.value].properties);cyclicNum.value++;const cyclicHighlightingLayer = new mars3d.layer.GeoJsonLayer({id: "cyclicHighlightingLayer",name: "数据总体概览-单个",data: dataHighlighting,symbol: {// type: "polygon",styleOptions: {fill: true,opacity: 1,clampToGround: false,outline: true,outlineStyle: {width: 5,color: "#3ee9d5"},color: "#22906a",// 一定要设置高度,不然初始化的地图板块会盖住高亮颜色setHeight: 10}}});map.addLayer(cyclicHighlightingLayer);
};

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

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

相关文章

【JavaWeb学习笔记】7 - Servlet入门开发

零、在线文档 Servlet 3.1 API Documentation - Apache Tomcat 8.0.53 一、Servlet基本介绍 1.为什么出现Servlet 提出需求:请用你现有的html css javascript,开发网站,比如可以让用户留言/购物/支付,你能搞定吗? 不能 这几个不能直接操作数据库 …

Java 语言关键字

Java关键字是电脑语言里事先定义的,有特别意义的标识符,有时又叫保留字,还有特别意义的变量。Java的关键字对Java的编译器有特殊的意义,他们用来表示一种数据类型,或者表示程序的结构等,关键字不能用作变量…

20231213给Ubuntu18.04.6LTS新加一块HDD机械硬盘

20231213给Ubuntu18.04.6LTS新加一块HDD机械硬盘 2023/12/13 22:50 rootrootrootroot-X99-Turbo:~$ cat /etc/issue Ubuntu 18.04.6 LTS \n \l sudo fdisk -l rootrootrootroot-X99-Turbo:~$ rootrootrootroot-X99-Turbo:~$ sudo fdisk -lu Disk /dev/sda: 2.7 TiB, 300059298…

【源码解析】flink sql执行源码概述:flink sql执行过程中有哪些阶段,这些阶段的源码大概位置在哪里

文章目录 一. sql执行流程源码分析1. Sql语句解析成语法树阶段(SQL - > SqlNode)2. SqlNode 验证(SqlNode – >Operation)3. 语义分析(Operation - > RelNode)4. 优化阶段(RelNode - &…

LangChain 25: SQL Agent通过自然语言查询数据库sqlite

LangChain系列文章 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索I…

2023全国大学生数据分析大赛A题完整论文教学

大家好呀,从发布赛题一直到现在,总算完成了全国大学生数据分析大赛A题某电商平台用户行为分析与挖掘完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 实…

透析回溯的模板

关卡名 认识回溯思想 我会了✔️ 内容 1.复习递归和N叉树,理解相关代码是如何实现的 ✔️ 2.理解回溯到底怎么回事 ✔️ 3.掌握如何使用回溯来解决二叉树的路径问题 ✔️ 回溯可以视为递归的拓展,很多思想和解法都与递归密切相关,在很多…

Windows 网络监控的内容和方式

Microsoft Windows是使用最广泛的操作系统之一,受到全球用户的青睐,Windows 设备与许多进程、服务和事件相关联,这些进程、服务和事件通常需要从单个控制台进行跟踪,这就是 Windows 网络监控工具派上用场的地方。Windows 网络监控…

项目总结-自主HTTP实现

终于是写完了,花费了2周时间,一点一点看,还没有扩展,但是基本功能是已经实现了。利用的是Tcp为网络链接,在其上面又写了http的壳。没有使用epoll,多路转接难度比较高,以后有机会再写&#xff0c…

一张图片组合一组动作就可以生成毫无违和感的视频!

你敢信,1张人物图片 1张动作动画,就可以生成一段视频。网友直呼:“主播/视频UP主可能快要下岗了!” (模型视频来源于网络) 本周,字节跳动联合新加坡国立大学发布了一款开源项目 MagicAnimate&…

Linux Ubuntu 手动搭建webDav

1、安装 因为需要跟 zotero 进行交互,因此需要在服务器搭建一个webDav 以下是搭建步骤: sudo apt-get update sudo apt-get install apache2 Ubuntu 安装apache2来实现 不同于Centos 安装好了之后,运行 a2enmod dav_fs a2enmod dav 激…

【视频笔记】古人智慧与修行

古人的智慧 相由心生、老子悟道、佛祖成佛 多一些思考,多一些精神修炼。 除非我们今天能够产生与人类科技发展相并行的精神变革,否则永远可能也无法跳脱出历史的轮回。 视频来源 曾仕强教授周易的智慧 太极两仪四象八卦 一生二,二生三&…

大数据机器学习深度解读决策树算法:技术全解与案例实战

大数据机器学习深度解读决策树算法:技术全解与案例实战 本文深入探讨了机器学习中的决策树算法,从基础概念到高级研究进展,再到实战案例应用,全面解析了决策树的理论及其在现实世界问题中的实际效能。通过技术细节和案例实践&…

现代雷达车载应用——第2章 汽车雷达系统原理 2.5节 检测基础

经典著作,值得一读,英文原版下载链接【免费】ModernRadarforAutomotiveApplications资源-CSDN文库。 2.5 检测基础 对于要测试目标是否存在的雷达测量,可以假定下列两个假设之一为真: •H0:—测量结果仅为噪声。 •H1:—测量是噪…

eNSP小实验(vlan和单臂路由)

一.vlan的划分 实验目的&#xff1a; ①pc1 只可以和pc2通信&#xff0c;不可以和pc3 pc4通信 ②pc1和pc2只能到Server1&#xff0c;pc3和pc4到Server2 1.拓扑图 2.配置 PC1-4 同理配置 SW1 <Huawei> <Huawei>u t m //关闭注释 Info: …

Nginx的location匹配和rewrite重写

一、location匹配 常用的正则表达式 ^ &#xff1a;匹配输入字符串的起始位置 $ &#xff1a;匹配输入字符串的结束位置 * &#xff1a;匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”&#xff1a;匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll…

1.5万字 + 25张图盘点RocketMQ 11种消息类型,你知道几种?

本文是基于RocketMQ 4.9版本讲解 前置知识 为了帮助大家更好地理解这些消息底层的实现原理&#xff0c;这里我就通过三个问题来讲一讲RocketMQ最最基本的原理 1、生产者如何发送消息 在RocketMQ中有两个重要的角色 NameServer&#xff1a;就相当于一个注册中心 Broker&#xf…

批量生成标题文章:AI文章创作助力高效办公,提升办公效率

随着人工智能技术的不断发展&#xff0c;AI文章创作已经成为了高效办公的新趋势。这种技术可以快速生成高质量的文章&#xff0c;从而大大提高办公效率。相比传统的手写文章&#xff0c;AI文章创作具有更高的效率和准确性。在撰写文章时&#xff0c;往往要花费大量的时间和精力…

SpringBoot之视图渲染技术

前言 在Spring Boot中&#xff0c;视图渲染技术用于将动态数据渲染到用户界面&#xff0c;生成最终的HTML、XML、JSON等文档&#xff0c;以便将其返回给客户端浏览器 一.关于Freemarker 1.介绍 Freemarker是一个Java模板引擎&#xff0c;用于生成基于模板的动态内容。它是一…

有没有手机电脑同步的工作时间管理软件?

越来越多的职场人士感到每天的工作任务是比较多的&#xff0c;而工作时间又是有限的&#xff0c;所以经常时间不够用。因此&#xff0c;对于上班族来说&#xff0c;高效的时间管理是提高工作效率、按时完成任务的关键。为了满足这一需求&#xff0c;很多网友都在寻找一款既能在…