mapbox-gl 实现绘制图形吸附功能

news2024/11/25 0:55:10

文章目录

    • 一、前言
    • 二、实现代码


一、前言

mapbox-gl 为地图前端框架,以优美的地图样式著称。mapbox-gl-draw 插件可以实现绘制图形,编辑图形的功能,但是编辑图形时无法吸附点位,导致相邻面无法相接。使用mapbox-gl-draw-snap-mode 扩展插件可以解决问题

二、实现代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>mapbox_draw_吸附</title>
    <script src="lib/jquery-3.4.1.js"></script>
    <link href="lib/mapbox-gl/mapbox-gl.css" rel="stylesheet">
    <script src="lib/mapbox-gl/mapbox-gl.js"></script>
    <script src="lib/lodash/lodash.min.js"></script>
    <script src="lib/plugins/mapbox-gl-utils/0.39.0/mapbox-gl-utils.js"></script>
    <script src='lib/plugins/turf/6.3.0/turf.min.js'></script>
    <script src="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.4.1/mapbox-gl-draw.js"></script>
    <link rel="stylesheet" href="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.4.1/mapbox-gl-draw.css" type="text/css">
    <!--<script src="https://unpkg.com/mapbox-gl-draw-pinning-mode"></script>-->
    <script src="https://unpkg.com/mapbox-gl-draw-snap-mode"></script>
</head>
<style>
    html, body {
        height: 100%;
        margin: 0px;
    }

    li, ul {
        list-style: none;
    }

    #map {
        width: 100%;
        height: 100%;
    }
</style>
<body>
<div id="map">
</div>
</body>
<script type="module">
  // https://github.com/mhsattarian/mapbox-gl-draw-snap-mode 吸附
  mapboxgl.accessToken = '****';
  var map = new mapboxgl.Map({
    container: 'map',
    zoom: 12,
    minZoom: 4,
    center: [113.53033743016164, 34.81470384732482],
    style: 'mapbox://styles/mapbox/light-v11',
    antialias: true
  })
  U.init(map)
  const draw = new MapboxDraw({
    modes: {
      ...MapboxDraw.modes,
      direct_select: mapboxGlDrawSnapMode.SnapDirectSelect,
      draw_point: mapboxGlDrawSnapMode.SnapPointMode,
      draw_polygon: mapboxGlDrawSnapMode.SnapPolygonMode,
      draw_line_string: mapboxGlDrawSnapMode.SnapLineMode,
    },
    // Styling guides
    styles: mapboxGlDrawSnapMode.SnapModeDrawStyles,
    userProperties: true,
    // Config snapping features
    snap: true,
    snapOptions: {
      snapPx: 15, // defaults to 15
      snapToMidPoints: false, // defaults to false
      snapVertexPriorityDistance: 0.0025, // defaults to 1.25
    },
    guides: true, // 网格线
  })
  map.addControl(draw)

  map.on('load', () => {
  })
</script>
</html>

有疑问可以关注下,相互交流探讨~
在这里插入图片描述

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

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

相关文章

JS+CSS案例:用CSS+JS做漂亮的拟真时钟

JSCSS案例&#xff1a;用CSSJS做漂亮的拟真时钟 今天给大家分享一个挺酷的CSSjs模拟的时钟。 案例效果图&#xff1a; 案例分析 通过CSS画一个表的外观&#xff0c;通过JS获取当前时间&#xff0c;并控制表针做对应角度的旋转。 制作时钟外观 HTML结构 首先&#xff0c;我…

python实现小游戏随机猜数

1、脚本练习 import random# 初始化剩余的猜测次数 counts 3 # 生成一个1到10之间的随机整数 numb random.randint(1, 10)# 循环直到猜测次数用完 while counts > 0:tmp input("请输入小鱼手里的数字 (你还剩下 {} 次机会): ".format(counts))guess int(tmp)…

精通剪辑艺术,2024年度四大必备剪辑软件推荐!

在这个视觉为王的时代&#xff0c;视频内容的创作和编辑已经成为了一种艺术形式。无论是个人创作者还是专业团队&#xff0c;都在寻找能够提升工作效率和创作质量的工具。今天&#xff0c;就让我们一起探索几款市面上广受好评的视频剪辑工具&#xff0c;它们将帮助你将创意变为…

测试总结8/6

1.签到 判断其大小写是否与之相等 #include<bits/stdc.h> using namespace std; long long t,x,y; int ans,n,m,k0; const int N2e57; int s[N]; string sum; string num"CodeForces"; int main() {cin>>n;for(int i1; i<n; i) {cin>>sum;int …

细腻呵护静音生活缓冲器,家具中的隐形侍者

在忙碌的生活节奏中&#xff0c;家是我们寻找宁静与放松的避风港。而家具缓冲器&#xff0c;就像一位隐形的侍者&#xff0c;在不经意间为我们营造出温馨、宁静的居住环境。它们静静地工作&#xff0c;细腻地呵护着每一处细节&#xff0c;让家的每一次触碰成为一次尊享体验。 细…

当上领导,不可不懂的3大管人法则

当上领导&#xff0c;不可不懂的3大管人法则&#xff0c;精辟&#xff01; 法则一&#xff1a;软硬都要 在团队管理中&#xff0c;只硬不软或只软不硬都无法达到理想的效果。 只有软硬兼施&#xff0c;刚柔并济&#xff0c;才能四两拨千斤&#xff0c;根据不同的情况和员工&a…

深入解析数据仓库ADS层-从理论到实践的全面指南

在大数据时代,数据仓库已经成为企业进行数据分析和决策的核心系统。而在数据仓库的分层架构中,ADS(Application Data Store)层作为最上层的数据应用层,直接面向业务应用和分析需求,其重要性不言而喻。然而,很多数据从业者对ADS层的理解还停留在表面,不清楚如何构建高效的ADS层来…

2024年全国青少信息素养大赛python编程复赛集训第十一天编程题分享

整理资料解析答案非常不容易,感谢各位大佬给个点赞和分享吧,谢谢 今天题目较简单:适合小学组 大家如果不想阅读前边的比赛内容介绍,可以直接跳过:拉到底部看集训题目 (一)比赛内容: 【小学组】 1.了解输入与输出的概念,掌握使用基本输入输出和简单运算 为主的标准…

归并排序+堆,P1631 序列合并

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 序列合并 - 洛谷 二、解题报告 1、思路分析 不难想到 a[0] b[0] < a[0] b[1] < a[0] b[2] < ... < a[0] b[n - 1] a[1] b[0] < a[1] b[1] < a[1] b[2] < ... < a[1] b[n…

如何拯救LoRA初始化?LoRA-GA:性能显著提升+收敛速度更快!

文章链接&#xff1a;https://arxiv.org/pdf/2407.05000 亮点直击 提出了 LoRA-GA&#xff0c;一种新颖的 LoRA 初始化方法&#xff0c;通过近似低秩矩阵的梯度与全权重矩阵的梯度来加速收敛。确定了在非零初始化下的缩放因子&#xff0c;该因子确保适配器输出的方差不受适配器…

PCIe学习笔记(17)

延迟容忍报告(LTR)消息 LTR消息可选地用于报告有关其读/写服务延迟容忍度的设备行为。 &#xff08;通过 LTR&#xff0c;PCIe 设备可以告知系统它们能容忍的最大响应延迟是多少&#xff0c;只要系统在这个时间之内对 PCIe 设备提出的请求做出响应即可。&#xff09; LTR消息…

统信UOS微信常见问题

统信UOS微信常见问题 1. 家庭版如何激活&#xff1f; ①注册Union ID账号 ②绑定微信 ③登录Union ID激活系统 2. 应用商店微信qq下载失败&#xff0c;进行系统更新&#xff0c;提示依赖错误&#xff0c;检查更新失败怎么解决&#xff1f; 问题描述 安装应用商店内的应用无法…

【Linux操作系统】关于深度睡眠与浅度睡眠进程的理解

目录 一、可中断的睡眠状态&#xff08;S浅度睡眠状态&#xff09;二、不可中断的睡眠状态&#xff08;D深度睡眠状态&#xff09;三、关于S浅度睡眠状态与D深度睡眠状态的理解 一、可中断的睡眠状态&#xff08;S浅度睡眠状态&#xff09; S&#xff08;sleeping&#xff09;…

利用阿里云镜像仓库创建属于自己的私有镜像仓库

阿里云官网&#xff1a;https://www.aliyun.com/ 在阿里云官网注册账号&#xff0c;然后进入控制台 选择容器镜像服务 创建命名空间 创建镜像仓库 选择命名空间&#xff0c;仓库类型&#xff08;设为私有的话&#xff0c;镜像不能随意拉取&#xff09; 点管理 按以下步骤将…

炒黑豆:营养与美味的黑色宝藏

在众多的美食中&#xff0c;炒黑豆宛如一颗低调的黑色珍珠&#xff0c;散发着独特的魅力。食家巷炒黑豆&#xff0c;看似简单&#xff0c;却蕴含着不简单的营养价值。黑豆本身富含蛋白质、维生素、矿物质等多种营养成分&#xff0c;经过炒制之后&#xff0c;其香味被进一步激发…

(javaweb)Http协议

目录 一.http概述 二.Http-请求协议 三.Http响应协议 四.Http协议解析 一.http概述 ---复制这个位置会自动前面有http 浏览器给服务器发送请求携带请求数据&#xff0c;服务器解析数据&#xff0c;服务器前提需要知道具体格式等等--约定 服务器处理完请求&#xff0c;需要给…

jpg图片怎么批量转为png?jpg图片批量转为png的几种方法

jpg图片怎么批量转为png&#xff1f;在处理大批量的jpg图片&#xff0c;并将它们转换为png格式时&#xff0c;选择合适的工具和策略至关重要。这种转换通常涉及到不同的应用场景和需求&#xff0c;例如在网页设计中需要透明背景&#xff0c;或者在打印工作中需要更高的图像质量…

AOP学习

AOP概述 AOP&#xff08;Aspect Oriented Programming&#xff09;&#xff1a;⾯向切⾯编程&#xff0c;它是⼀种思想&#xff0c;它是对某⼀类事情的集中处理。 什么是SpringAOP? ⽽ AOP 是⼀种思想&#xff0c;⽽ Spring AOP 是⼀个框架&#xff0c;提供了⼀种对 AOP 思…

速看!2025第三届深圳国际生态环境监测产业博览会

2025第三届深圳国际生态环境监测产业博览会 展会主题&#xff1a;生态环境智慧监测创新&#xff0c;助力生态环境高水平保护 展会时间&#xff1a;2025年7月24-26日 展会地点&#xff1a;深圳会展中心&#xff08;福田&#xff09; 主办单位&#xff1a; 广东省环境监测协…

Flutter 学习之旅

本文只针对个人学习所遇问题&#xff0c;以及解决方案进行记录&#xff0c;不深刨原理。 不深刨原理是因为我也才开始学习&#xff0c;讲不明白&#xff0c;有可能还误导大家 &#xff0c;希望多多包涵。 问题一&#xff1a; 如何通过appBar去设置状态栏字体颜色以及状态栏透…