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


JavaScript ArcGIS StreamLayer用法及代碼示例


基本信息

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

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

ESM: import StreamLayer from "@arcgis/core/layers/StreamLayer";

類: esri/layers/StreamLayer

繼承: StreamLayer > Layer > Accessor

自從:用於 JavaScript 4.0 的 ArcGIS API

用法說明

概述

StreamLayer 連接到 stream servicecustom WebSocket service ,實時顯示與一組 tracked objects 關聯的觀察流。觀察可以包括對位置、屬性或兩者的更改。流圖層可以包含點、折線或麵要素。

將流圖層添加到Map後,用戶可以看到服務器推送的實時更新。與feature layers 不同的是,您顯式調用服務以獲取更新,流層主動偵聽流服務廣播的數據流。流層相應地更新其顯示,動態刷新以響應此數據廣播。這意味著您無法使用或查看在訂閱開始之前流式傳輸的任何函數。

創建StreamLayer

StreamLayers 可以通過以下兩種方式之一創建:從服務 URL,或通過設置 webSocketUrl 從獨立的 Web 套接字。

引用服務 URL

StreamLayer 可以使用 The ArcGIS GeoEvent Extension for Server 發布的 stream service 。要從服務創建 StreamLayer 實例,您必須將圖層的 url 屬性設置為指向流服務的 REST 端點。為了使圖層在視圖中可見,必須將其添加到視圖引用的Map中。有關向Map添加圖層的信息,請參閱Map.add()

// Construct Stream Layer
streamLayer = new StreamLayer({
  url: "https://geoeventsample1.esri.com:6443/arcgis/rest/services/LABus/StreamServer",
  purgeOptions: {
    displayCount: 10000
  },
  maxReconnectionAttempts: 100,
  maxReconnectionInterval: 10,
  renderer: renderer
}
map.add(streamLayer);

引用自定義流服務

StreamLayer 可以通過將其 webSocketUrl 屬性設置為指向自定義服務的 websocket 來使用自定義流服務。由於 StreamLayer 需要架構,因此在從自定義流服務創建圖層時需要設置多個屬性。必須使用 GeometryType 屬性設置要素的幾何類型,因為每層僅允許一種幾何類型。 objectId 字段和 trackIdField 必須與字段對象數組一起設置,提供每個字段的架構。查看 this repo 以開始創建自定義流服務。

const layer = new StreamLayer({
  popupTemplate: {
    content: "OBJECTID={OBJECTID}, TRACKID={TRACKID}",
  },
  webSocketUrl: "ws://localhost:8000",
  fields: [
    {
      name: "OBJECTID",
      alias: "ObjectId",
      type: "oid",
    },
    {
      name: "TRACKID",
      alias: "TrackId",
      type: "oid",
    }
  ],
  timeInfo: {
    trackIdField: "TRACKID"
  },
  geometryType: "point"
  maxReconnectionAttempts: 100,
  maxReconnectionInterval: 10,
  renderer: renderer
});
map.add(layer);

Track-aware StreamLayer

track-aware 流層是與現實世界中單個對象相對應的流特征通過稱為 trackId field 的公共屬性鏈接在一起的層。例如,表示飛機的流層可以使用 trackId 字段將單個飛機的所有觀測值組合在一起,以將它們與附近飛機的觀測值區分開來。當流層具有軌跡感知函數時,您可以按軌跡指定對象的到期時間,而不是按視圖中的觀察總數。

清除規則

來自實時提要的函數數量可能會使瀏覽器過載並導致瀏覽器無響應。為了限製消耗的內存量,必須偶爾刪除或從內存中清除實時數據。使用層構造函數中的 purgeOptions 定義規則,指定在收到新消息和刷新層時如何刪除數據。為流層選擇正確的清除規則對於最大化函數和性能至關重要。

附加信息

當流服務推送更新的速度超過客戶端可以處理的速度時,API 會降低客戶端的更新速率。這將防止快速更新流服務使瀏覽器過載。您可以在 StreamLayerView 上收聽 update-rate 事件以檢查 websocket 和客戶端更新率。

maxReconnectionAttempts 和 maxReconnectionInterval 屬性可用於指定當層失去與流服務的連接時嘗試重新連接的次數以及嘗試之間等待的時間。

相關用法


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