gpt4 book ai didi

javascript - 如何在绘制第二个多边形后删除多边形

转载 作者:行者123 更新时间:2023-12-03 02:16:52 25 4
gpt4 key购买 nike

我找到了一个绘制多边形的函数,但在绘制第二个多边形时我需要它,它总是会删除前一个多边形,因为我的 map 上必须始终有一个多边形

<!DOCTYPE html>
<html>
<head>
<title>Draw Features</title>
<link rel="stylesheet" href="https://openlayers.org/en/v4.6.4/css/ol.css" type="text/css">
<!-- The line below is only needed for old environments like Internet Explorer and Android 4.x -->
<script src="https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL"></script>
<script src="https://openlayers.org/en/v4.6.4/build/ol.js"></script>
</head>
<body>
<div id="map" class="map"></div>
<form class="form-inline">
<label>Geometry type &nbsp;</label>
<select id="type">
<option value="Box">Box</option>
<option value="None">None</option>
</select>
</form>

其中包含所有 html 和 javascript 代码 http://jsfiddle.net/p_tsagkis/c4o4put8/

Link to JS code

最佳答案

  1. 在绘图交互中使用 drawstart 事件。
  2. drawstart时使用clear作为源。

您可以通过layersource访问 map 上的要素。
在 fiddle 上的示例中,您的特征包含在变量向量中。而且,当您查看代码一段时间时,draw 交互上有 drawend 事件,这让您猜测还有 drawstart 事件。

// just like `drawend`
draw.on('drawstart', function(e) {

});

您想要的是在开始绘图时不显示任何功能,这样您就可以在drawstart时清除源上的所有功能

// map.getLayers().getArray()[1] is your vector layer
draw.on('drawstart', function(e) {
map.getLayers().getArray()[1].getSource().clear();
});

http://jsfiddle.net/c4o4put8/25/

关于javascript - 如何在绘制第二个多边形后删除多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49337892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com