當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


JavaScript ArcGIS Sketch.update用法及代碼示例


基本信息

以下是所在類或對象的基本信息。

AMD: require(["esri/widgets/Sketch"], (Sketch) => { /* code goes here */ });

ESM: import Sketch from "@arcgis/core/widgets/Sketch";

類: esri/widgets/Sketch

繼承: Sketch > Widget > Accessor

自從:用於 JavaScript 4.10 的 ArcGIS API

用法說明

Sketch.update函數(或屬性)的定義如下:

update (graphics, updateOptions) {Promise<void>}


初始化指定圖形的更新操作並觸發更新事件。

參數:

規格:
類型說明
graphics Graphic|Graphic[]

要更新的圖形或圖形數組。隻有添加到 SketchViewModel 的圖層屬性中的圖形才能更新。

updateOptions Object
可選的

要更新的圖形的更新選項。

規格:
tool

String

可選的

更新工具的名稱。指定所選圖形的更新操作。提供的工具將成為活動工具。

可能的值

說明
transform 這是默認圖形工具多邊形幾何學,折線幾何或圖形使用ObjectSymbol3DLayer觀點幾何學。默認情況下,它允許對一個或多個圖形進行縮放、旋轉和移動。它的默認行為可以通過設置enableRotation,enableScaling或者preserveAspectRatio調用時的參數update方法或將它們設置在默認更新選項Sketch 小部件初始化時的屬性。
reshape 此工具允許移動整個圖形或圖形的各個頂點。可以添加或刪除頂點。此工具隻能用於具有 polygonpolyline 幾何圖形的單個圖形。
move 這是默認圖形工具觀點不使用 a 的幾何ObjectSymbol3DLayer.它應該用於您隻想移動選定的特定情況polygonpolyline沒有附加選項的圖形。此外,move工具不支持切換到不同的模式,因為move操作內置於兩個transformreshape默認為工具。

可能的值"transform"|"reshape"|"move"

enableRotation

Boolean

可選的
默認值:真的

指示更新圖形時是否啟用rotation 操作。僅在 tooltransform 時適用。

enableScaling

Boolean

可選的
默認值:真的

指示更新圖形時是否啟用scale 操作。僅在 tooltransform 時適用。

enableZ

Boolean

可選的
默認值:真的

指示更新圖形時是否可以修改z-values。啟用後,將顯示高度手柄操縱器。

multipleSelectionEnabled

Boolean

可選的
默認值:真的

指示是否可以一次進行多個選擇。這適用於與 transform 工具的 shift+click 交互。

preserveAspectRatio

Boolean

可選的
默認值:錯誤的

指示更新圖形時是否啟用統一縮放操作。將此屬性設置為 true 時,必須設置 enableScaling true。僅當 tooltransform 並且在轉換使用 3D object symbol layer 的點時始終為 true 時才適用。

toggleToolOnClick

Boolean

可選的
默認值:真的

指示正在更新的圖形是否可以在 transformreshape 更新選項之間切換。

返回:

類型 說明
Promise<void> 當請求的更新工具已加載並可以使用時解決。

例子:

// start update operation for the selected graphic
// with transform tool. Only allow uniform scaling operation.
sketch.update([selectedGraphic], {
  tool: "transform",
  enableRotation: false,
  enableScaling: true,
  preserveAspectRatio: true,
  toggleToolOnClick: false
});
// Listen to sketch's update event to validate graphic's
// location while it is being reshaped or moved
sketch.on("update", onGraphicUpdate);
function onGraphicUpdate(event) {
  // get the graphic as it is being updated
  const graphic = event.graphics[0];
  // check if the graphic is intersecting school buffers
  intersects = geometryEngine.intersects(buffers, graphic.geometry);

  // change the graphic symbol to valid or invalid symbol
  // depending the graphic location
  graphic.symbol = (intersects) ? invalidSymbol : validSymbol

  // check if the update event's the toolEventInfo.type is move-stop or reshape-stop
  // user finished moving or reshaping the graphic, call complete method.
  // This changes update event state to complete.
  const toolType = event.toolEventInfo.type;
  if (event.toolEventInfo && (toolType === "move-stop" || toolType === "reshape-stop")) {
    if (!intersects) {
      sketch.complete();
    }
  } else if (event.state === "complete") {
      // graphic update has been completed
      // if the graphic is in a bad spot, call sketch's update method again
      // giving user a chance to correct the location of the graphic
      if ((!contains) || (intersects)) {
        sketch.update({
          tool: "reshape",
          graphics: [graphic],
          toggleToolOnClick: false
        });
      }
  }
}

相關用法


注:本文由純淨天空篩選整理自arcgis.com大神的英文原創作品 Sketch.update。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。