删除该功能会很感激以下问题的任何及所有的帮助:的OpenLayers 3删除功能不会从地图
我使用的OpenLayers 3绘制多边形。我想要实现的内容如下所示 - 当开始绘制新的多边形时,从地图中移除现有的任何多边形,这样一次只能绘制一个单一的多边形。但是,会发生的情况是该特征(多边形)仅从内存中移除,但仍然保持在地图上可见。
这的jsfiddle演示了此问题: http://jsfiddle.net/jp4dojwu/
正如你所看到的,onDrawStart我首先清除tempVectorSource(其中多边形绘制,因为featureOverlay.source === tempVectorSource),然后报警的功能数量为tempVectorSource。如预期的那样,警报将始终指示0,但多边形在地图上仍可见。
function onDrawStart(event)
{
//remove everything drawn previously
tempVectorSource.clear();
//can see the feature(s) are removed from memory
alert(tempVectorSource.getFeatures().length);
}
在此先感谢!
编辑:发现的人一个解决办法谁遇到了同样的问题 - 调用矢量源清楚之前设置的所有以前绘制的特色几何与没有COORDS点,如下所示:
function onDrawStart(event)
{
var features = tempVectorSource.getFeatures();
for(var i=0;i<features.length;i++)
{
features[i].setGeometry(new ol.geom.Point([]));
}
tempVectorSource.clear();
}
上述基本上将所有多边形渲染为“不可见”点。仍然好奇地找到一个真正的解决方案!
编辑(2):请参阅我接受的答案下面的评论,我有featureOverlay设置为地图的形状驻留..实例删除以下行修复问题,因为featureOverlay有它自己的形状副本:
featureOverlay.setMap(map);
搞不清我跟随..到底是什么select_interaction?至于在矢量源上调用clear(),它似乎并没有擦除多边形(至少在当时使用的ol.js构建中 - 是否在以下版本中已修复) - 它们仍然可见,尽管有一个稍微更透明的背景 – MS86 2014-11-12 18:53:07
对不起,也许我应该更详细地解释。在我的情况下,“select_interaction”是ol.interaction.Select的变量。像这里一样(http://openlayers.org/en/master/apidoc/ol.interaction.Select.html)。调用清除为我工作,我正在使用最新的ol版本。 – stopopol 2014-11-12 19:41:56
我不确定你使用的是哪个ol3版本,但下面的[draw-features](http://openlayers.org/en/master/examples/draw-features.html)适用于我:'draw。 on('drawstart',function(){vector.getSource()。clear();});'。 – erilem 2014-11-12 22:24:47