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…

Java中的多态到底是什么?

Java中的多态到底是什么? 在Java中,多态是面向对象编程中的一个重要概念,它有助于提高代码的灵活性和可维护性。多态分为编译时多态和运行时多态。 编译时多态(静态多态): 编译时多态是指在编译阶段确定方…

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

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

透析回溯的模板

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

Windows 网络监控的内容和方式

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

项目总结-自主HTTP实现

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

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

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

(第63天)19C NONCDB 转 PDB

目前很多 19C 数据库依然是创建为 NONCDB 架构,但是未来 CDB 架构的使用是无法避免的,在 21C 版本开始 Oracle 官方将不再支持 NONCDB 架构。 环境信息 本文主要介绍以下如何在 19C 同版本下将 NONCDB 转为 CDB/PDB 架构(DBMS_PDB.DESCRIBE 方式),以下为测试环境信息: …

什么是XSS攻击?如何防止它?

跨站脚本攻击(XSS),英文全称为 Cross-Site Scripting,是一种常见的 Web 安全漏洞。XSS 攻击的目标是在用户浏览器中执行恶意脚本,从而获取用户敏感信息、劫持用户会话或者进行其他恶意操作。 XSS 攻击通常发生在由用户…

探索C++中的常见排序算法

探索C中的常见排序算法 目录 冒泡排序 (Bubble Sort)选择排序 (Selection Sort)插入排序 (Insertion Sort) 冒泡排序 (Bubble Sort) 实现思路: 冒泡排序是一种简单直观的排序算法,它通过不断交换相邻元素的位置来达到排序的目的。算法的基本思想是重…

k8s中EmptyDir、HostPath、NFS三种基本存储方式介绍

目录 一.数据存储介绍 二.EmptyDir 1.简介 2.案例演示 三.HostPath 1.简介 2.案例演示 (1)介绍一下type类型 (2)简单演示 (3)数据同步功能 四.NFS 1.简介 2.案例演示 (1&#xff…

Linux Ubuntu 手动搭建webDav

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

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

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

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

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

【C++】POCO学习总结(十四):引用计数、共享指针、缓冲区管理

【C】郭老二博文之:C目录 1、Poco::AutoPtr 智能指针 1.1 说明 Poco::AutoPtr是一个含有引用计数的“智能”指针模版。 Poco::AutoPtr用于支持引用计数的类实例化。支持引用计数的类需要有以下要求: 维护一个引用计数(在创建时初始化为1)实现void du…

(企业 / 公司项目)SpringBoot3整合校验框架validation

在Spring Boot项目中使用校验框架validation可以让我们更方便地实现数据校验和错误提示。下面是Spring Boot集成校验框架validation的步骤。 添加依赖 在项目的pom.xml文件中添加validation依赖&#xff1a; <dependency><groupId>org.springframework.boot</…