news 2026/4/18 14:09:03

Mapbox中如何对已经加载的线段进行编辑?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mapbox中如何对已经加载的线段进行编辑?

在 Mapbox 中编辑已加载的线段(LineString)通常需要结合 Mapbox GL JS 和其相关插件来实现。以下是几种常见的编辑方法:

一、使用 Mapbox GL Draw 插件(最常用)

这是 Mapbox 官方推荐的绘图/编辑工具,支持线段的绘制、编辑和删除。

1. 安装和引入

<!-- 引入样式 --> <link href='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.2.2/mapbox-gl-draw.css' rel='stylesheet' /> <!-- 引入 JS --> <script src='https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.2.2/mapbox-gl-draw.js'></script>

或使用 npm:

npm install @mapbox/mapbox-gl-draw

2. 初始化并添加线段

import mapboxgl from 'mapbox-gl'; import MapboxDraw from '@mapbox/mapbox-gl-draw'; const map = new mapboxgl.Map({ container: 'map', style: 'mapbox://styles/mapbox/streets-v11', center: [lng, lat], zoom: 12 }); const draw = new MapboxDraw({ displayControlsDefault: false, controls: { line_string: true, // 启用线段绘制 trash: true // 启用删除 } }); map.addControl(draw); // 添加一条已有的线段(例如从GeoJSON) const line = { type: 'Feature', geometry: { type: 'LineString', coordinates: [[lng1, lat1], [lng2, lat2], [lng3, lat3]] }, properties: {} }; draw.add(line);

此时,虽然默认不是编辑样式,但是已经可以进行编辑。

3. 进入编辑模式

用户点击线段后,线段会显示顶点(可拖动调整)

可以通过代码触发编辑:

// 获取线段ID(需先添加线段时保存ID) const features = draw.getAll(); const lineId = features.features[0].id; // 进入编辑模式 draw.changeMode('direct_select', { featureId: lineId });

4. 保存编辑结果

map.on('draw.update', function(e) { const updatedData = draw.getAll(); console.log('更新后的线段数据:', updatedData); });
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 3:08:27

基于springboot+vue的农产品销售管理系统(源码+论文+部署+安装)

感兴趣的可以先收藏起来&#xff0c;还有在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望可以帮到大家。一、程序背景随着农业生产规模化、市场化推进及信息技术迅猛发展&#xff0c;农产品销售逐渐突破地域限制…

作者头像 李华
网站建设 2026/4/18 7:53:05

快捷键:Ctrl+Shift+P打开命令面板

核心作用命令面板相当于一个 “功能总菜单”&#xff0c;你可以通过输入关键词快速搜索并执行 VS Code 的所有功能&#xff0c;无需在各级菜单中点击查找&#xff0c;大幅提升操作效率。常见用途&#xff08;结合你的 ESP32 开发场景&#xff09;执行开发命令&#xff1a;输入E…

作者头像 李华
网站建设 2026/4/18 4:03:10

线程并行控制CompletableFuture

并行执行两个任务A和B。主线程等待时间最长为3s。所以A和B&#xff0c;单独运行的时长最长也是3s。 且如果A和B都没有超时&#xff0c;那么优先取A的值。否者谁不超时&#xff0c;就取谁。 线程池单个提交 比如下面的代码&#xff0c;先提交了两个异步任务&#xff0c;此时都…

作者头像 李华
网站建设 2026/4/18 5:33:40

Transformer模型详解:从入门到掌握大模型必备基础知识

本文详细介绍了一个包含8个章节的Transformer模型讲义&#xff0c;从整体框架到具体实现&#xff0c;包括Encoder-Decoder结构、文字向量化、位置编码、多头注意力机制、残差连接与层归一化、前馈神经网络以及模型输出等核心内容。该讲义旨在帮助读者彻底掌握Transformer原理&a…

作者头像 李华