问题标签 [leaflet-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.
vue.js - 从 vue2-leaflet-draw-toolbar 中提取坐标
我正在使用 vue2-leaflet-draw-toolbar 插件在地图上绘制形状,有人知道如何获取绘制形状的坐标吗?当标记离开这些区域时,我正在尝试使用这些数据来触发事件。
reactjs - 传单自定义编辑?处理程序?
是否可以将编辑模式下显示的矩形更改为其他内容,例如marcer、圆形或图标?
javascript - React-Leaflet:添加 L.TileLayer 打破地图
我的目标是将传单绘制添加到我的地图中。为此,我一直在使用 L 在组件挂载时将控件和drawedItem 层添加到地图中。问题似乎出在 TileLayer 上。如果我将它添加到渲染的 div 中,它只会填充 80% 的地图,让新工具栏看起来很糟糕。如果我用 L.TileLayer 添加它,它会填满整个地图,但会使大部分地图无法拖动。我会用图片来演示。
在渲染的 div 中添加 TileLayer:
注意:蓝色区域是无法交互的区域。操作地图的唯一方法是在绘图工具栏下拖动。我将包含这个不可操作层的 div:
最后,重要的是要注意,如果我在浏览器开发工具中手动删除此元素,则地图可以正常工作。为了使这个问题更简洁,我将删除所有传单绘制代码,以便希望问题更加明显。我现在将连同 index.html 一起显示代码。
索引.html:
最后,我要提一下,到目前为止,我在传单方面遇到了多个问题。首先,在渲染中使用 L AND 声明 TileLayer 不会导致问题。我在所有情况下都尝试过使用/不使用。此外, 和 的 idL.map
必须匹配才能正确引用,所以我ref={this.state.map}
没有任何用处。没有这个,我会丢失地图容器。如果您查看左上角的 + 和 - 符号,您将能够看到额外的层戳进来。如果我删除 componentDidMount 方法,地图将恢复正常。问题必须与我如何创建地图有关L.map
,因为如果我只是
我仍然遇到重叠问题,但是地图现在可以拖动了。如果我再添加L.TileLayer
,那就是它再次变得无法使用的时候。
javascript - Leaflet.draw 发出事件以停止绘图
使用传单绘制,当我用多边形绘制时,我需要在矩形的第二个点固定时结束绘制。监听 'drawvertex' 事件两次,在
我尝试使用 emit 和 completeShape 函数,但它不起作用,我尝试使用按钮“完成”的相同方法(当您单击多边形进行绘制时)但我没有在源代码上找到该方法。这是我的密码箱https://codesandbox.io/s/romantic-jepsen-7esnz?file=/index.html
javascript - 获取 Leaflet 上矩形的坐标
我想要获取用户将在地图(传单)上绘制的矩形每个角的坐标。
目标是提取最大/最小纬度和最大/最小经度。
这是我显示地图并使用 Leaflet-Draw 绘制矩形的代码:
我得到了四个角度的坐标 ( .getLatLngs()
),但我无法对这个系列进行排序。
例如这里是结果:LatLng(45.644768, -0.175781),LatLng(47.428087, -0.175781),LatLng(47.428087, 5.844727),LatLng(45.644768, 5.844727)
我想将每个纬度/经度存储在我将在我的网页中显示的变量中:
latN:47.428087
latS:45.644768
lonE:5.844727
lonW:-0.175781
你对我有什么建议吗?还是信息?
提前致谢 !
angular - Leaflet.Draw 中的图层每次都不同
我想要的是:
要单击删除,请选择绘制的图层,然后在单击保存时从 UI 和 Firestore 中删除它们
我现在如何拥有它:
每次我创建一个新的leaflet.Draw 图层(例如一个矩形)时,我都会将它保存到firestore,删除所有,然后再次创建每个图层。这是为了解决复制层的问题。
但是,每次我从 firestore 加载和创建图层(或刷新页面)时,图层都会获得新的 id。我需要 id 保持一致,以便我可以将 id 存储在 firebase 中,并在以后使用它进行删除。
问题:
我怎样才能做到这一点?或者,还有更好的方法?
我用于创建的代码在这里:
我在删除时找到 id 的方式是这样的:
leaflet - 使用 Leaflet-geoman 限制折线中的制造商点(成为一条线)
我想让用户画一条线(这是一条只有 2 个点的折线)。
我启用绘图和监听vertexadded
。当_rings
标记数等于 2 时,我禁用绘图。
这感觉不对有几个原因:
- 我访问一个私有变量
_rings
- 现在我禁用绘图但要可视化线条我必须在可视模式下重新启动它
- 为了允许用户移动线的 2 个点,我必须在编辑模式下重新启动线。
- 在编辑模式下,必须禁用在 2 个标记之间分割线,这可能吗?
我错过了一种更简单的方法吗?
mapbox - 允许在 mapbox draw mod 中删除点
我正在尝试重写 MapboxDraw.modes.draw_line_string.clickAnywhere 函数,以允许在 draw_line_string 模式下使用 SHIFT 键删除前一个点。它可以工作,但是当它删除前一点时,它会在新位置创建一个新点。
- 画一条线
- 按住 shift 并单击任何先前的点
- 将删除旧的创建一个新的
我想删除旧点并继续添加新点一个例子在这里 https://jsfiddle.net/benderlio/5fxwhkdp/7/
UPD: ok,重点是设置currentVertexPosition
leaflet - 如何在 react-leaflet v3 中绘制形状
您对将绘图功能实现到 react-leafletV3 有任何想法吗?我添加了一个事件侦听器,但它无法正常工作并对任何事情做出反应。