mapboxGL中区域掩膜的实现

news2024/11/17 1:49:18

概述

区域掩膜的功能也是比较常见的功能呢,本文分享在mapboxGL中结合canvas如何实现。

效果

动画.gif

实现

1. 创建画布

先创建一个map大小的canvas,设置其大小与样式,并添加到地图画布容器中。

const {width, height} = map.getCanvas()
canvas = document.createElement('canvas');
canvas.width = width;
canvas.height = height;
canvas.style.position = 'absolute';
canvas.style.top = '0px';
canvas.style.left = '0px';
canvas.style.zIndex = '1';
ctx = canvas.getContext('2d');
map.getCanvasContainer().appendChild(canvas);

2.注册move事件

注册地图的move事件,在地图变化的时候更新掩膜。

map.on('move', addMapModal)

3.核心实现

  • 通过map.project实现地理坐标到屏幕坐标的转换;
  • 通过globalCompositeOperation = 'source-out'设置反向裁剪;
function addMapModal() {
  ctx.fillStyle = '#ededed';
  ctx.strokeStyle = '#f00';
  ctx.lineWidth = 3;
  ctx.clearRect(0, 0, canvas.width, canvas.height)
  const coords = modalData.map(coord => {
    const {x, y} = map.project(coord)
    return [x, y]
  })
  
  ctx.beginPath();
  coords.forEach((coord, index) => {
    index === 0 ? ctx.moveTo(coord[0], coord[1]) : ctx.lineTo(coord[0], coord[1])
  })
  ctx.closePath();
  ctx.fill();
  
  ctx.globalCompositeOperation = 'source-out';
  ctx.rect(0, 0, canvas.width, canvas.height)
  ctx.fill();
  ctx.globalCompositeOperation = 'source-over';
  ctx.beginPath();
  coords.forEach((coord, index) => {
    index === 0 ? ctx.moveTo(coord[0], coord[1]) : ctx.lineTo(coord[0], coord[1])
  })
  ctx.closePath();
  ctx.stroke()
}

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

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

相关文章

Vue入门三(表单控制|购物车案例|v-model进阶|与后端交互|计算属性|监听属性|Vue生命周期)

文章目录 一、表单控制二、购物车案例三、v-model进阶四、与后端交互跨域问题解决,三种交互方法跨域问题详解1-CORS:后端代码控制,上面案例采用的方式1) 方式一:后端添加请求头2) 方式二:编写中间件3) 方式三&#xff…

什么是线程?

线程 1. 线程概述 线程是计算机科学中的基本概念,指的是在一个进程中执行的独立指令流。通常,一个进程可以包含多个线程,它们共享进程的资源,如内存空间、文件句柄等,但每个线程有自己的独立执行流。线程是操作系统进…

Python图片格式转换与文字识别:技术与实践

目录 一、引言 二、Python图片格式转换 PIL库介绍 代码示例 质量优化 三、文字识别技术 四、Python实现文字识别 1、安装与配置OCR工具 2. 读取图片并提取文字 3. 优化与提高识别准确率 五、实践与应用案例 六、结论 一、引言 随着数字化时代的到来,图…

SOLIDWORKS 2024新功能之SOLIDWORKS PDM篇

SOLIDWORKS 2024 新功能 PDM篇目录概述 • 装配体直观 • 在 Web2 中下载文件的特定版本 • 文件类型图标 • “更改状态”命令中的签出选项 • 复制树对话框 • 查看检出事件详细信息 • 系统变量 • 查看许可证使用 • 数据安全增强功能 • SOLIDWORKS PDM 性能改进…

软件架构之事件驱动架构

一、定义 事件驱动的架构是围绕事件的发布、捕获、处理和存储(或持久化)而构建的集成模型。 某个应用或服务执行一项操作或经历另一个应用或服务可能想知道的更改时,就会发布一个事件(也就是对该操作或更改的记录)&am…

msckf_vio在ubuntu20.04中的编译

1.新建catkin workspace文件夹,并在其中新建src文件夹,并将源码clone至src内。 源码地址:https://github.com/KumarRobotics/msckf_vio 目录层级示意如下,build和devel不必新建,后续指令会自动新建。 2. 在编译之前…

虹科技术丨PCAN网关设备:打通通信壁垒,LED指示灯编程示例

来源:虹科汽车智能互联 虹科技术丨PCAN网关设备:打通通信壁垒,LED指示灯编程示例 原文链接:https://mp.weixin.qq.com/s/hpxssnDeD-43x3tyHJbAtA 欢迎关注虹科,为您提供最新资讯! 导读 在工业自动化、汽…

python 文本内容随机生成器

这段代码是一个用于生成指定长度的随机文本的函数。主要包括两个函数:generate_text()和generate_other_content()。 generate_text(original_text, length)函数接受两个参数:原始文本和生成文本的长度。该函数的作用是根据原始文本生成指定长度的文本。…

竞赛保研 基于深度学习的人脸识别系统

前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的人脸识别系统 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐! 🧿 更多资料, 项目分享: https://gitee.com/dancheng-senior/…

【SpringCloud】之网关应用(进阶使用)

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《SpringCloud开发之网关应用》。🎯&a…

基于ChatGPT4+Python近红外光谱数据分析及机器学习与深度学习建模

022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5,将人工智能的发展推向了一个新的高度。2023年4月,更强版本的ChatGPT4.0上线,文本、语音、图像等多模态交互方式使其在…

python——数字精度控制

num1 11 num2 11.345 print("数字11宽度限制为5,结果%5d" % num1) print("数字11宽度限制为1,结果%1d" % num1) print("数字11.345宽度限制为7,小数精度为2结果%7.2f" % num2) print("数字11.345不限制…

课堂纪律差如何整治

在教育的世界里,有时候课堂纪律会成为一种挑战。那些在教室里大声喧哗、无视规则的学生,常常让老师们头疼不已。那么,面对课堂纪律差的问题,我们应该如何有效整治呢?下面就让我来为你揭晓这个问题的答案。 一、建立明确…

比特币惊现“天地针”!ETF终局将至,美证监会账号被盗!谁该对市场波动负责?

就在投资者神经紧绷时刻,万众期待的ETF批准事件再次闹出“假新闻”大乌龙,而这次的主角竟是美证监会。 美国东部时间周二下午4:11,美国证券交易委员会(SEC)官方X账户发布帖子称:“今天,美国证券…

数据结构之单调栈、单调队列

今天学习了单调栈还有单调队列的概念和使用,接下来我将对其定义并配合几道习题进行讲解: 首先先来复习一下栈与队列: 然后我们来看一下单调栈的定义: 单调栈中的元素从栈底到栈顶的元素的大小是按照单调递增或者单调递减的关系进…

九州金榜|厌学原因孩子情绪不稳定

孩子厌学是每个家长都不愿因看到,因为厌学会对孩子学习造成极大的影响,对于学习成绩下降这是必然的结果,所以,当孩子出现厌学情绪的时候,家长就会非常焦虑,但是对于孩子为什么会厌学,家长并不知…

烟火检测/区域人流统计/AI智能分析网关V4如何配置通道?

TSINGSEE青犀智能分析网关(V4版)是一款高性能、低功耗的软硬一体AI边缘计算硬件设备,硬件内部署了近40种AI算法模型,支持对接入的视频图像进行人、车、物、行为等实时检测分析,并上报识别结果,并能进行语音…

java SSM问卷调查系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM问卷调查管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代 码和数据库,系统主要采…

【Vue】文件管理页面制作

<template><div><div style"margin: 10px 0"><el-input style"width: 200px" placeholder"请输入名称" suffix-icon"el-icon-search" v-model"name"></el-input><el-button class"ml…

Logo设计神器:适合新手的简易操作软件,快速入门!

标志设计软件在品牌营销和企业识别中发挥着重要作用。本文将对10款知名标志设计软件进行横向评价&#xff0c;从不同维度评价其功能、易用性、创意和适用性&#xff0c;帮助您选择最适合您需求的标志设计软件。 1.即时设计 推荐指数&#xff1a;★★★★★ 即时设计是一款功…