当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。