OpenLayers 3 使用捕捉进行绘制和修改
OpenLayers 3 draw and modify with snap
我正在快照交互示例之上开始使用OpenLayers 3,我想在下拉菜单中添加一个None
选项。
我添加了选项:
<select name="draw-type" id="draw-type">
<option value="None">None</option>
<option value="Point">Point</option>
<option value="LineString">LineString</option>
<option value="Polygon">Polygon</option>
<option value="MultiPolygon">MultiPolygon</option>
</select>
然后是类似于绘制要素示例中的条件:
var typeSelect = document.getElementById('draw-type');
var value = typeSelect.value;
if (value !== 'None') {
}
但是我不清楚在哪里插入条件以及这是否是正确的方法。
谢谢你,先生。
JSFiddle
我想
出了这个小技巧:
<select name="draw-type" id="draw-type">
<!-- Add None option -->
<option value="None">None</option>
<option value="Point">Point</option>
<option value="LineString">LineString</option>
<option value="Polygon">Polygon</option>
<option value="MultiPolygon">MultiPolygon</option>
</select>
然后:
init: function() {
// Add None option
map.removeInteraction(this.None);
this.None.setActive(false);
map.addInteraction(this.Point);
this.Point.setActive(false);
map.addInteraction(this.LineString);
this.LineString.setActive(false);
map.addInteraction(this.Polygon);
this.Polygon.setActive(false);
map.addInteraction(this.MultiPolygon);
this.MultiPolygon.setActive(false);
},
// Add None option
None: new ol.interaction.Draw({
source: vector.getSource(),
type: /** @type {ol.geom.GeometryType} */ ('Point')
}),
也许这不是最干净的解决方案,但它有效!
JSFiddle
将更改事件设置为选择元素,如果值为 None,则从映射中删除绘制交互组件。如果该值不是 None,请在测试尚未添加绘制交互组件后将其添加回地图。
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 在Safari执行javascript之前对其进行修改
- 有没有一个javascript图形绘制库可以进行气球树布局
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 使用相同的数据集绘制各种符号
- 使用onclick绘制SVG路径
- 在谷歌地图上绘制位置数据库
- 用chart.js绘制条形图
- “可绘制地图”设置地图选项“纬度-经度”
- 用Javascript修改内部标记的CSS规则
- 多维数据集网格未在指定的分区中绘制
- 使用谷歌图表在x轴上绘制日期
- 使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
- 绑定Range输入以修改样式
- 如何在React Native中绘制图形
- 可以从Chrome扩展修改窗口对象吗
- 修改数据源时,D3 停止绘制点
- OpenLayers 3 使用捕捉进行绘制和修改
- 在 RaphaelJS 中修改形状或重新绘制它们
- 我如何阅读和修改已经绘制的谷歌图表上的轴