mapbox-gl 点位编辑功能

2023-10-31


前言

矢量在线编辑是gis常用的编辑功能,兴趣点(POI)与区域面(AOI)或者道路线不同,在地图上没有形状和面积,仅表示落位地点,本文介绍使用mapbox进行点位编辑的常用方式,底图使用高德公开的地图服务。


方式一:借助 Marker

mapbox 的 Marker 组件可以实现对任意点位的即时编辑,为图层绑定事件,并及时与后端交互生成类型为Point的GeoJson数据源,在交互完成后刷新数据即可。

添加自定义icon

根据UI设计生成新的雪碧图,作为地图上点位的图标

在这里插入图片描述

在这里插入图片描述

添加POI图层,绑定对应事件

mapInstance?.addLayer({
          id: 'feature-poi-layer',
          type: 'symbol',
          source: 'featureDataSource',
          paint: {
            "text-color": '#000000',

          },
          layout: {
            'text-field': ['get', 'name'],
            'text-font': [
              'Akaya'
            ],
            "text-offset": [0, 1],
            "text-anchor": "top",
            "text-size": 12,
            "icon-image": blueIcon,
            "icon-size": 0.5
          },
        });
        // 鼠标移入
        mapInstance.on('mouseenter', 'feature-poi-layer', (e) => {
          mapInstance.getCanvas().style.cursor = 'pointer ';
        });
        // 鼠标移出
        mapInstance.on('mouseout', 'feature-poi-layer', (e) => {
          mapInstance.getCanvas().style.cursor = '';
        });
        // 点击点位
        mapInstance.on('click', 'feature-poi-layer', (e) => {
          onFeatureSelect(e, mapInstance, 'feature-poi-layer')
        })

点位展示
在这里插入图片描述

点位选择
在这里插入图片描述

基于Marker交互

创建自定义Marker

  function getMarkerEl() {
    const el = document.createElement('div');
      el.className = 'marker';
      el.style.backgroundImage = `url(${curPositionImg})`;
      el.style.width = `18px`;
      el.style.height = `22px`;
      el.style.backgroundSize = '100%';

      return el
  }

	...
	 markerRef.current = new Marker({
        element:getMarkerEl(),
        anchor:'bottom'
      })
      .setLngLat([lngLat.lng, lngLat.lat])
      .addTo(map)

编辑 / 创建POI

// 编辑完成后重新刷新数据
map?.getSource(sourceId)?.setData(currentLayerGeojson);

在这里插入图片描述

方式二:采用 mapbox-gl-draw 插件

参考:mapbox-gl图形绘制并编辑已有图层,该方式的缺点是无法设置图标与文字显示在地图上。

在这里插入图片描述

总结

mapbox实现点位编辑功能

  • 方式一:借助 Marker

  • 方式二:采用 mapbox-gl-draw 插件

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mapbox-gl 点位编辑功能 的相关文章

  • python 中的测地线缓冲

    给定土地多边形作为Shapely https pypi python org pypi Shapely MultiPolygon 我想找到代表例如的 多 多边形海岸线周围12海里缓冲区 使用匀称buffer方法不起作用 因为它使用欧几里德计
  • 找到两个多边形之间最短笛卡尔距离的最快方法是什么

    I have 1 个红色多边形说和50 个随机放置的蓝色多边形 它们位于地理2D space 找到红色多边形与其最近的蓝色多边形之间的最短距离的最快 速度测试算法是什么 请记住 这并不是将构成多边形顶点的点作为值来测试距离的简单情况 因为它
  • 如何使用 GDAL 从 tiff 和 4 个角纬度和经度创建 geotiff [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一张没有 TIFF 格式地理数据的图像 地图 我需要从我的图像中获取 GeoTIFF 文件 我的地
  • 使用 GeoPandas 计算其他多边形内的多边形面积

    我有两个GeoSeries df1 gpd GeoSeries Polygon 0 0 2 0 2 2 0 2 Polygon 1 5 1 5 4 2 4 4 2 4 Polygon 1 3 5 3 3 5 1 2 5 Polygon 1
  • 将 DMS 坐标转换为 R 中的十进制

    我有以下 DMS 格式的坐标 我需要将它们转换为十进制 Libraries gt library sp gt library magrittr Latitide Longitude as strings gt lat lt 21d11m24
  • 如何从 NoSQL DBMS(如 DynamoDB)存储 GPS 坐标并搜索半径范围内的地点

    我的团队需要像 DynamoDB 这样的 DBMS 来存储大量数据 主要是位置和坐标 我考虑过使用一些基于 GIS 的 DBMS 例如 PostGIS 并在 POINT 上建立索引 但 DynamoDB 似乎非常适合我们的使用 存储坐标并快
  • 在地图上显示线串的方向 - 自动缩放地图

    我有这段代码 它在地图上绘制一个线串 它是用户提供的 2 个坐标点的轨迹 public class Quickstart public static void main String args throws Exception displa
  • 如何在 javascript google 地图 API 上使用米显示 geojson 数据

    GeoJson 文件坐标以 X Y 米为单位 而不是 lng lat 如何在谷歌地图上显示 GeoJson数据 type FeatureCollection features type Feature geometry type Multi
  • Worldwind - 形状总是显示在图像之上?

    我在 WorldWindowGLJPanel 的图层列表中添加了两个图层 其中之一是包含形状的 RenderableLayer 另一个是包含光栅图像的 BasicTiledImageLayer 一层包含一个对象 问题是 当我使用图层管理器
  • Plotly Scattermapbox,无法向标记添加文本

    我正在尝试将文本添加到下面的绘图中 原始代码修改自https plotly com python lines on mapbox https plotly com python lines on mapbox import plotly g
  • SVG中的地理识别位置(GeoLocation/GeoTag)

    我想知道如何对 SVG 地图进行地理标记 我的搜索结果 地理标签以元数据格式提供 例如Exif http www awaresystems be imaging tiff tifftags privateifd gps html XMP h
  • 在 R 中从一条线偏移绘制一条平行线

    我有代表沿着一些街道行驶的线串 但我实际上想代表骑自行车者的旅程 它偏离线路 即他们在路边附近行驶 我正在努力思考如何去做 我制作了一段可重现的 R 代码来进行说明 Let s say I have a route along some s
  • 使用 MapBox GL JS 无需访问令牌

    有没有办法使用MapBox GL JS没有访问令牌 我在文档中找不到任何提示MapBox GL JS https docs mapbox com mapbox gl js api 然而 Uber建议是可以通过他们的图书馆 https ube
  • R 从 .CSV 创建 NetCDF

    我正在尝试从 csv 文件创建 NetCDF 我在这里和其他地方读过一些教程 但仍然有一些疑问 我有一个这样的表 lat long time rh temp 41 109 6 1 1 40 107 18 2 2 39 105 6 3 3 4
  • 老虎普查数据中的 Shape_area 和 ALAND AWATER

    Shape area 是什么意思 我注意到它不是 Aland 和 Awater 的总和 这三个的单位是什么 ALAND和AWATER的单位是平方米 例如 tl 2015 us county dbf康明县有记录ALAND 1477895811
  • 检索 geodjango 多边形对象的边界框

    如何在 geodjango 中获取 MultiPolygon 对象的边界框 在 API 中找不到任何内容http geodjango org docs geos html http geodjango org docs geos html
  • 地图路由,像谷歌地图一样吗?

    我一直对地图路由很感兴趣 但我从未找到任何好的入门 甚至高级 级别的教程 有人有任何指示 提示等吗 Update 我主要寻找有关如何实现地图系统 数据结构 算法等 的指导 看看开放街道地图项目 http www openstreetmap
  • Mapbox GL 中的 MaxBounds 和自定义非对称填充

    我有一个 Mapbox GL JS 应用程序 在地图上显示一些小部件 为了确保地图上的任何内容都不会被它们隐藏 我使用以下命令添加了一些填充map setPadding 这是一个不对称的 在我的例子中左边比右边大 它按预期工作 例如fitB
  • SQLite + SpatiaLite 问题

    我正在尝试使用 System Data SQLite 提供程序从 C 访问 SpatiaLite 当我尝试加载 SpatiaLite 扩展时 我总是得到 System Data SQLite SQLiteException SQLite e
  • 查看 TIN 文件的工具

    有没有免费的开源工具可用于查看 TIN 不规则三角形网络 文件 我从 LAS 激光雷达数据 文件获得的 thanks 这在很大程度上取决于格式 大多数从 LIDAR 数据生成的 TIN 都采用标准 GIS 格式之一 在这种情况下 良好的开源

随机推荐

  • C语言 fstat函数

    系列文章目录 文章目录 系列文章目录 前言 一 stat系统调用 二 fstat 1 功能 2 相关函数 3 头文件 4 函数声明 5 描述 6 返回值 7 例子 三 struct stat结构体 前言 一 stat系统调用 stat系统调
  • Linux学习之expect操作详解

    一 expect安装介绍 1 expect命令安装 安装语句 yum install expect 2 expect命令含义 expect是一种脚本语言 它能够代替人工实现与终端的交互 主要应用于执行命令和程序时 系统以交互形式要求输入指定
  • Python全栈开发【基础-03】编程语言的分类

    专栏介绍 本专栏为Python全栈开发系列文章 技术包括Python基础 函数 文件 面向对象 网络编程 并发编程 MySQL数据库 HTML JavaScript CSS JQuery bootstrap WSGI Django Flas
  • usb鼠标驱动(一)

    Linux USB 鼠标驱动程序详解 注册一个usb driver 这个drvier不是usb设备driver 而是接口driver use a define to avoid include chaining to get THIS MO
  • 微信小程序消息订阅Java

    前言 编写日期 2022 11 04 写这篇文章原因 公司给政府做一个订餐系统 需要在员工在小程序上发起订餐后经过部门领导和书记的审批后 再由食堂确认订餐结果 在订餐审批单在各个节点流转的过程中 需要给每一个节点的审批人发送微信订阅消息和手
  • 【目标检测】目标检测的评价指标(七个)

    目录 目标检测的评价指标 一 正样本与负样本 二 真正 TP 假正 FP 真负 TN 假负 FN 1 正确的正向预测 True Positive TP 正样本被正确检测的数量 2 错误的正向预测 False Positive FP 3 错误
  • redis 过期消息订阅实现(java实现)

    一 开启redis消息通知功能 方法1 修改conf文件 编辑 etc redis redis conf文件 添加或启用以下内容 key过期通知 notify keyspace events Ex 方法2 使用命令 登陆redis cli
  • AUTOSAR-自旋锁(spinlock)与互斥锁

    AUTOSAR多核OS为实现核间资源互斥 保证数据一致性 设计了自旋锁机制 该机制适用于核间资源互斥 对于多核概念 需要一种新的机制来支持不同内核上任务的互斥 这种新机制不应在同一内核上的 TASK 之间使用 因为它没有意义 在这种情况下
  • Leetcode——118.杨辉三角

    杨辉三角 杨辉三角 是二项式系数在三角形中的一种几何排列 在欧洲 这个表叫做帕斯卡三角形 帕斯卡 1623 1662 是在1654年发现这一规律的 比杨辉要迟393年 比贾宪迟600年 杨辉三角是中国古代数学的杰出研究成果之一 它把二项式系
  • el-empty Empty 空状态 自定义图片 使用本地图片

    今天用到el empty组件 Empty 空状态 使用image属性导入自己本地图片不成功 后面发现问题如下 1 image属性要用动态绑定 即 image url 2 图片导入要用require url vue div class que
  • python 对数值各个数位上的单数操作

    如果对数值各个数位上的单数进行操作呢 比如 求解任意给定的某个数字的各个数位上的单数的平方和 如给定数字123 求解 思路就是通过循环使用 取余 和 取整 操作从该数字的个位开始往高位不断取值 代码如下 def calculate num
  • 可参考的MES系统软件

    MES生产管理系统 用的生产管理软件有 企业资源计划管理系统 ERP 制造企业生产过程执行管理系统 MES 生产设备和工位智能化联网管理系统 生产数据及设备状态信息采集分析管理系统 MDC 制造过程数据文档管理系统 工装及刀夹量具智能数据库
  • 常用的英文单词2000

    常用的英文单词 可以ctrl f来查找需要的单词 查找需要的前缀后缀引导的单词 1 a ei art 一 个 任何一 个 每一 个 2 I ai pron 我 3 ability biliti n 能力 本领 才能 才智 4 able ei
  • QT UDP简单的通信示例

    UDP user datagram protocol 即用户数据协议 是一个轻量级的 不可靠的 面向数据报的无连接协议 在qt中提供了QUdpSocket类来进行UDP数据报的发送和接收 在Pro中加入network模块 因为upd是无连接
  • Java中的重写(Override)

    从字面上看 重写就是 重新写一遍的意思 其实就是在子类中把父类本身有的方法重新写一遍 子类继承 了父类原有的方法 但有时子类并不想原封不动的继承父类中的某个方法 所以在方法名 参数列 表 返回类型 除过子类中方法的返回值是父类中方法返回值的
  • 万字长文总结Android多进程,面试心得体会

    前言 跳槽容易 但想拿大厂的offer可不那么容易 很多小伙伴一直叨叨要跳槽 大大小小的公司面试了很多 但却很难拿到一个满意的offer 要么package太低 要么就是面试被虐 经过多次面试失利之后 方能明白什么叫基础不牢 地动山摇 面试
  • 二、读取编码器数值实现电机测速—1 、配置串口通信;

    读取编码器数值实现电机测速 电机系列 二 读取编码器数值实现电机测速 1 配置串口通信 usart h usart c main c 2 配置编码器 电机系列 二 读取编码器数值实现电机测速 1 配置串口通信 usart h ifndef
  • ElasticSearch第一讲 Docker-compose 单机部署Elasticsearch kibana esHead与配置认证证书设置密码

    准备工作 docker安装 docker compose安装配置 如果还有没安装docker的可以参考我的docker docker compose安装配置 本次讲解的是安装ES 7 13 3 现在目前官网给出的最新ES版本已经是8 x了
  • 基于Vue实现动态组织结构图

    最近一个项目里有个前端绘制家谱图的需求 大概是下面这个样子 基于Vue实现动态组织结构图 点击节点会弹出操作菜单 实现增删改查等操作 查阅网上资料发现 现有案例基本都是基于orgchart这个jQuery插件实现的 我们的项目是基于Vue的
  • mapbox-gl 点位编辑功能

    文章目录 前言 方式一 借助 Marker 添加自定义icon 添加POI图层 绑定对应事件 基于Marker交互 创建自定义Marker 编辑 创建POI 方式二 采用 mapbox gl draw 插件 总结 前言 矢量在线编辑是gis