我正在创建一个在绘制时从openlayers多边形中删除点的功能。所以有我的“配置”:
Uncaught (in promise): Error: Template parse errors:
Can't bind to 'options' since it isn't a known property of 'angular2-
date-picker'.
<angular2-date-picker title="Click to enter From Date and Time"
[ERROR ->][options]="fromDateTransaction"
[(ngModel)]="date" [settings]="settings"
"): ng:///MasterSystemModule/TransactionComponent.html@52:84
用于开始绘图的代码:
source = new ol.source.Vector({
wrapX: false,
});
raster = new ol.layer.Tile({
source: new ol.source.OSM()
});
vector = new ol.layer.Vector({
source: source,
style: new ol.style.Style(/* some config */)
});
view = new ol.View({
center: defaultLonLatFormat,
zoom: 12
});
mapx = new ol.Map({
layers: [raster, vector],
target: 'target',
view: view
});
用于删除最后一点的代码:
draw = new ol.interaction.Draw({
source: source,
type: 'Polygon',
});
mapx.addInteraction(draw);
一切都像魅力一样,直到多边形打开 - 直到我将最后一点与第一点连接。在那之后删除最后一点什么也没做。幸运的是,我可以用draw.removeLastPoint();
draw.changed();
删除点 - 它可以工作,直到有3个点,这使得最小的闭合多边形 - 三角形。那么即使alt + click
组合也不起作用。我甚至在OpenLayers examples上试过这个 - 同样的行为。所以我有三个问题:
关闭多边形后会发生什么,所以我无法用alt + click
删除点?
为什么我无法从多边形中删除最后三个点?
任何想法如何实现这样的功能?
答案 0 :(得分:0)
绘图完成后,the sketch is added to the target layer,也从绘图交互中删除,所以如果你想访问它,你需要调用
source.getFeatures();
任何绘制交互功能都不再对它产生影响。
定义多边形的线性环数组。阵列的第一个线性环定义了多边形的外边界或表面。每个随后的线性环在多边形的表面中限定孔。线性环是顶点坐标的数组,其中第一个坐标和最后一个坐标是等效的。
从技术上讲,当外边界不是线性环时,它不是有效的多边形。当你的坐标少于三个时,它就更像一条线。