簡體   English   中英

刪除多邊形中的所有點

[英]Remove all points from polygon one by one

我正在創建一種在繪制時從openlayers多邊形中刪除點的功能。 所以有我的“配置”:

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();

直到多邊形打開為止,一切都像吊飾一樣工作-直到我將最后一點與第一個點連接起來。 在那之后,刪除最后一點毫無意義。 我可以用alt + click刪除點-它可以工作直到剩下3個點,從而使最小的閉合多邊形-三角形。 然后,即使alt + click組合也不起作用。 我什至在OpenLayers示例中嘗試過此操作-同樣的行為。 所以我有三個問題:

  1. 關閉多邊形后會發生什么,所以我無法使用draw.removeLastPoint()刪除點?

  2. 為什么我無法從多邊形中刪除最后三個點?

  3. 任何想法如何實現這種功能?

  1. 繪制完成后, 將草圖添加到目標圖層 ,並將其從繪制交互中刪除,因此,如果要訪問它,則需要調用

    source.getFeatures();

任何繪圖交互功能都不再對其起作用。

  1. 作為書面這里 ,多邊形是:

定義多邊形的線性環的數組。 數組的第一個線性環定義了多邊形的外邊界或表面。 每個隨后的線性環在多邊形表面上定義了一個孔。 線性環是頂點坐標的數組,其中第一個坐標和最后一個坐標相等。

從技術上講,當外邊界不是線性環時,它不是有效的多邊形。 當坐標少於三個時,則更多。

  1. 您可以檢查多邊形幾何體中的點數,並在嘗試刪除第三個點時,將幾何體更改為線(或更精確地更改為LineString),而在刪除第二個點時,將其更改為點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM