问题标签 [mapbox-gl-draw]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
154 浏览

javascript - MapBoxGL Draw:为什么我可以看到值时未定义事件的“FeatureTarget”?

我想要做的是访问featureTarget从 MapboxGL 返回的鼠标事件对象的属性。

我的代码是这样的:

然后 Chrome 的控制台显示如下:

我超级困惑...第二行显示featureTarget成员,但第三行未定义!如您所见,没有错字。

有人对我为什么无法访问featureTarget价值有任何想法吗?

0 投票
1 回答
74 浏览

php - PHP JSON在MySQL中编码数字数组

我尝试在 Mapbox GL Draw 中保存和编辑行,为此我使用 MySQL 和 PHP(要求),并且只将坐标保存在 MySQL 中,但我在 JSON 中进行查询和编码,程序返回这个

我需要数值数组中的坐标,这是怎么回事

它在 MySQL 中的坐标如何 JSON (longtext utf8mb4_bin) 和查询 1 个数据是

0 投票
0 回答
245 浏览

angular - 将鼠标悬停在绘制的多边形上时 Mapbox 显示区域

我正在使用下面的代码添加一个自定义控件以在地图上绘制多边形并显示屏幕侧面(在 div 上)的区域。

我想在绘制的多边形悬停时显示该区域。而且,我还可以绘制多个多边形,因此每当我将鼠标悬停在绘制的多边形上时,我都需要显示带有该区域的弹出窗口。

我无法理解的是,这些多边形是在哪个特定图层/源中绘制的?我浏览了“mapbox-gl-draw”文档,但没有提到图层。我刚刚发现,当我this.map.getStyle()如上所示进行控制台时,我得到以下对象:

因此,我在浏览器控制台中看到上述对象中的源包含mapbox-gl-draw-hotmapbox-gl-draw-cold源。它们包含活动的和陈旧的绘制多边形(及其相应的特征数据),但是我如何使用这些数据来启用地图上的弹出窗口,这些弹出窗口将在悬停时向我显示相应的区域。我尝试在这些来源中使用生成的多边形的 id,但没有运气。

欢迎任何建议。

0 投票
0 回答
123 浏览

javascript - 如何覆盖js方法?

我想在 mapbox/mapbox-gl-draw https://github.com/mapbox/mapbox-gl-draw/blob/main/src/modes/draw_line_string.js的 DrawLineString 方法中添加一些自定义功能

我可以使用 Draw.constructor.modes.draw_line_string.toDisplayFeatures 访问此功能

有没有什么简单的方法可以在不修改源文件的情况下用我的代码更新这个函数?谢谢

UPD:当我尝试使用这种方法时,我得到了createVertex is undefined,即使我将此函数复制到 main.js 绘图工具的功能也被破坏了

0 投票
0 回答
281 浏览

mapbox - 允许在 mapbox draw mod 中删除点

我正在尝试重写 MapboxDraw.modes.draw_line_string.clickAnywhere 函数,以允许在 draw_line_string 模式下使用 SHIFT 键删除前一个点。它可以工作,但是当它删除前一点时,它会在新位置创建一个新点。

  1. 画一条线
  2. 按住 shift 并单击任何先前的点
  3. 将删除旧的创建一个新的

我想删除旧点并继续添加新点一个例子在这里 https://jsfiddle.net/benderlio/5fxwhkdp/7/

UPD: ok,重点是设置currentVertexPosition

0 投票
1 回答
158 浏览

javascript - 如何从 Mapbox 中的地图实例访问控制实例

我需要一种从 Mapbox 地图实例访问注册控件实例的方法。

例如,假设我注册了一个假设的 Mapbox 控件:

如何control在我只能访问地图实例的代码库中的其他一些地方访问此实例?

对于上下文;我需要根据只有控件实例知道的某些值来执行一些地图操作。

谢谢。

0 投票
1 回答
476 浏览

svelte - Svelte Mapbox-gl-draw:如何将多边形坐标获取到父组件?

根据 Svelte 教程中的 Context API 示例,我在 Svelte-Sapper 应用程序中使用 Mapbox。我想使用 Mapbox-Draw 绘制多边形以根据对象的坐标限制搜索对象的区域。我扩展了示例代码以添加绘图功能:

mapbox.js:

Map.svelte:

该地图工作正常,并且也在地图上绘制多边形。但是我在 Map-svelte 的父组件中没有成功读取多边形的坐标 - 例如在按钮按下时。我已经尝试了很多东西,但没有任何东西接近。做这个的最好方式是什么?

父组件如下所示:

坐标('coords')来自 MongoDB 存储中的 api。多边形在地图上围绕其标记的子集绘制。然后通过 api 将多边形的坐标发回以检索该子集的数据。一切正常,除了我找不到读取多边形坐标的方法 - 我用 draw.getAll() 以不同的方式尝试了它,但没有成功......

0 投票
0 回答
135 浏览

mapbox - 在 mapbox-gl-js 中绘制贝塞尔曲线

我正在寻找一种在我的 mapbox gl js 应用程序中绘制贝塞尔曲线的方法。就像这个非常有趣的例子:https ://demos.mapbox.com/bezier-drawing-tool/

不幸的是,我没有找到任何关于这个演示的文档,它正是我正在寻找的。

在此演示中,当您选择钢笔工具时,您可以通过拖动鼠标来绘制贝塞尔曲线。在编辑模式下,贝塞尔手柄会显示并允许用户修改贝塞尔样条曲线。

mapbox gl draw https://github.com/mapbox/mapbox-gl-draw/blob/main/docs/API.md 是一个非常有前途的 API,但目前不支持贝塞尔曲线。我还查看了可用的自定义模式,但一无所获。

作为后备,我认为我可以使用 mapbox gl draw 开发一种自定义模式,通过将线细分为多个段来支持贝塞尔曲线。但在这样做之前,我想知道是否已经存在对绘制贝塞尔曲线的支持?

谢谢

0 投票
1 回答
169 浏览

mapbox-gl-js - Mapbox-gl-draw 单击按钮后更改绘图样式

我试图让用户选择他们的油漆颜色,然后在地图上绘制多边形。我知道有一个 setFeatureProperty 方法,但它需要传入一个特征 ID,因此用户需要先绘制形状然后更改样式。无论如何,为了将来的绘图而改变为可编程的绘图风格?任何帮助表示赞赏。

0 投票
0 回答
106 浏览

mapbox-gl-js - 使用 mapbox-gl-draw 更改模式时出错

我正在尝试在同一张地图上应用多种绘制模式。但是在将drawModefrom更改draw_circle为其他模式时出现错误。这是详细信息。

  • mapbox-gl-js 版本:2.1.1
  • mapbox-gl-draw 版本:1.2.2

触发行为的步骤

  1. 在此 Medium 帖子之后创建自定义 DrawCircleMode
  2. 应用 DrawCircleMode → 切换到其他绘图模式,例如draw_polygon, draw_line,draw_point.changeMode

预期行为

drawMode 从 DrawCircleMode 其他模式更改

实际行为

发生错误