Javascript 是否可以在传单中设置尺寸和数量限制。绘图?
此问题针对传单用户(以及使用传单.draw插件的用户) 我正在使用传单,并希望允许我的用户在地图的任何区域上绘制1个(且仅1个)多边形。我还想以某种方式限制该多边形的大小(例如限制正方形的边长或其覆盖的区域——最好以度为单位指定,以便设置的大小限制可以在不考虑缩放级别的情况下平移) 我的最终目标只是提取4个正方形顶点的坐标或多边形区域覆盖的坐标 也就是说,我找到了传单。画插件。这是了不起的,但是,我需要限制它的功能,以我的要求(只有一个多边形绘制的时间,特别是,大小不能画得太大)。这可能吗?如果是,怎么做 不管这是可能的还是不可能的,有没有更好的方法来做到这一点 也就是说,我找到了传单。画插件。这是了不起的,但是,我需要限制它的功能,以我的要求(只有一个多边形绘制的时间,特别是,大小不能画得太大)。这可能吗?如果是,怎么做 我想你需要自己编写代码 我认为有两种可能性:Javascript 是否可以在传单中设置尺寸和数量限制。绘图?,javascript,plugins,leaflet,leaflet.draw,Javascript,Plugins,Leaflet,Leaflet.draw,此问题针对传单用户(以及使用传单.draw插件的用户) 我正在使用传单,并希望允许我的用户在地图的任何区域上绘制1个(且仅1个)多边形。我还想以某种方式限制该多边形的大小(例如限制正方形的边长或其覆盖的区域——最好以度为单位指定,以便设置的大小限制可以在不考虑缩放级别的情况下平移) 我的最终目标只是提取4个正方形顶点的坐标或多边形区域覆盖的坐标 也就是说,我找到了传单。画插件。这是了不起的,但是,我需要限制它的功能,以我的要求(只有一个多边形绘制的时间,特别是,大小不能画得太大)。这可能吗?如果
1更快,2更干净。您必须根据项目的大小进行选择。我没有破解传单绘图源 将控件添加到地图后,我在控件内放置了一个隐藏的div。然后,当一个多边形被创建时,我会显示该div。我使用CSS将其绝对定位在控件上,这样按钮就会被“禁用”,CSS会使按钮看起来褪色。如果删除了多边形,则隐藏该div 不是最好的解决方案,但我不需要编辑源代码就可以工作 添加drawControl后,我添加了隐藏的div:
$('.leaflet-draw-section:first').append('<div class="leaflet-draw-inner-toolbar" title="Polygon already added"></div>');
以下是CSS:
.leaflet-draw-inner-toolbar {
background: none repeat scroll 0 0 rgba(255, 255, 255, 0.6);
bottom: 0;
display: none;
left: 0;
position: absolute;
right: 0;
top: 0;
}
我没有侵入传单的来源就这么做了 将控件添加到地图后,我在控件内放置了一个隐藏的div。然后,当一个多边形被创建时,我会显示该div。我使用CSS将其绝对定位在控件上,这样按钮就会被“禁用”,CSS会使按钮看起来褪色。如果删除了多边形,则隐藏该div 不是最好的解决方案,但我不需要编辑源代码就可以工作 添加drawControl后,我添加了隐藏的div:
$('.leaflet-draw-section:first').append('<div class="leaflet-draw-inner-toolbar" title="Polygon already added"></div>');
以下是CSS:
.leaflet-draw-inner-toolbar {
background: none repeat scroll 0 0 rgba(255, 255, 255, 0.6);
bottom: 0;
display: none;
left: 0;
position: absolute;
right: 0;
top: 0;
}
我能为这个问题提出另一个解决方案吗 我将通过执行以下操作将多边形数量限制为一个:
map.on('draw:created', function (e) {
var layer = e.layer;
if(drawnItems && drawnItems.getLayers().length!==0){
drawnItems.clearLayers();
}
drawnItems.addLayer(layer);
});
我正在收听draw:created事件,并确定是否已经有标记。如果有,我将移除该标记并将新标记放置在所需位置。因此,用户可以少点击一次,因为他们不再需要删除上一个标记,并且始终强制执行一个标记规则
如果您想允许多个标记,可以对最旧的层执行FIFO删除
如果您不想自动删除图层,可以提示用户或忽略该请求。我可以为该问题提出另一种解决方案吗 我将通过执行以下操作将多边形数量限制为一个:
map.on('draw:created', function (e) {
var layer = e.layer;
if(drawnItems && drawnItems.getLayers().length!==0){
drawnItems.clearLayers();
}
drawnItems.addLayer(layer);
});
我正在收听draw:created事件,并确定是否已经有标记。如果有,我将移除该标记并将新标记放置在所需位置。因此,用户可以少点击一次,因为他们不再需要删除上一个标记,并且始终强制执行一个标记规则
如果您想允许多个标记,可以对最旧的层执行FIFO删除
如果您不想自动删除图层,可以提示用户或忽略该请求。能否更清楚地描述您的最终目标?@LSA-当然,基本上需要修改传单.draw以将地图上绘制的多边形数量限制为1。而且,还需要限制多边形的大小。如果有其他方法不使用传单.draw,我也愿意使用这种方法。你解决了这个问题吗?你做什么了吗?如果是,你能发布你的解决方案吗?你能更清楚地描述你的最终目标吗?@LSA-当然,基本上,需要修改传单.draw以将地图上绘制的多边形数量限制为1。而且,还需要限制多边形的大小。如果有其他方法不使用传单.draw,我也愿意使用这种方法。你解决了这个问题吗?你做什么了吗?如果是,你能发布你的解决方案吗