EsriJS:CustomLayerView 不请求渲染

问题描述 投票:0回答:1

我目前正在使用 https://developers.arcgis.com/javascript/latest/sample-code/custom-lv-masking/ 作为指导,在 Typescript 中编写自定义图层和自定义 LayerView。

为了使用正确的 Typescript 类,我将示例代码拆分为类 CustomLayer 和 CustomLayerView2D 以及扩展的 BaseLayerView2D。在处理函数中我有以下代码

    const projectionPromise = projection.load();
    const layer = this.layer as CustomLayer;

    if (!layer.geometry) {
      this.projectedGeometry = null;
      this.needsImageUpdate = true;
      this.requestRender();
      return;
    }

    if (geometry !== oldGeometry) {
      projectionPromise.then(() => {
        this.projectedGeometry = projection.project(
          layer.geometry,
          layer.tileInfo.spatialReference,
          projection.getTransformation(layer.geometry.spatialReference, layer.tileInfo.spatialReference)
        );
        this.needsImageUpdate = true;
        this.requestRender();
      });
    } else {
      this.needsImageUpdate = true;
      this.requestRender();
    }

每次调用 this.requestRender() 时都会收到错误,指出 BaseLayerView2D 显示未设置。

所以我尝试调用 super.initialize() 来设置显示,但随后出现错误,指出 BaseLayerView2D 容器中未设置。我该如何设置容器或者我做错了什么?

typescript arcgis-js-api
1个回答
0
投票

事实证明,尝试将 Esri 示例强制放入 TypeScript 类中导致了该错误。将示例导出为 lambda 函数(从原始示例中删节)是有效的。

© www.soinside.com 2019 - 2024. All rights reserved.