FeatureEffect

AMD: require(["geoscene/views/layers/support/FeatureEffect"], (FeatureEffect) => { /* 代码 */ });
ESM: import FeatureEffect from "@geoscene/core/views/layers/support/FeatureEffect";
类: geoscene/views/layers/support/FeatureEffect
继承于: FeatureEffect Accessor
起始版本: GeoScene API for JavaScript 4.22
已废弃 从 4.22 版开始。请改用 geoscene/layers/support/FeatureEffect

FeatureEffect 允许您在 2D MapView 中强调或淡化满足 filter 的要素。includedEffectexcludedEffect 属性允许您应用 CSS 过滤器到过滤器中包含或排除的要素。通常,您使用 includedEffect 来强调过滤器中包含的要素,使用 excludedEffect 来淡化过滤器中排除的要素。

已知限制

  • 3D SceneViews 不支持 FeatureEffect。
  • FeatureEffect 不能应用于带有 热图渲染器的 layerView。
  • 在启用了 featureReduction 类型的 cluster 的图层中不支持 FeatureEffect。
  • WebMap 中不保留 layerViews 上的 FeatureEffect。
  • 请参阅打印了解已知的打印限制。
// apply feature effect on the layerView to features that do not
// meet the filter requirements
 featureFilter = new FeatureFilter({
  geometry: filterGeometry,
  spatialRelationship: "intersects",
  distance: distance,
  units: unit
});
// 设置对排除功能的影响 make them gray and transparent
if (layerView) {
  layerView.effect = new FeatureEffect({
    filter: featureFilter,
    excludedEffect: "grayscale(100%) opacity(30%)"
  });
}
 * // apply a feature effect to the features in the layer
const effect = new FeatureEffect({
  filter:{
    where: "magnitude >= 3"
  }
  excludedEffect: "grayscale(100%) opacity(30%)"
});
layer.effect = effect;
示例:

构造函数

new FeatureEffect(properties)
参数:
properties Object
optional

所有可传入构造函数的属性,请参见属性列表

示例代码:
// 典型用法
const effect = new FeatureEffect({
  filter:{
    where: "magnitude >= 3"
  }
  excludedEffect: "grayscale(100%) opacity(30%)"
});
layerView.effect = effect;

属性列表

可以设置、检索或监听的属性。参见 使用属性
展示继承属性 隐藏继承属性
属性 类型 描述
String更多信息

类名。

更多信息Accessor
Effect更多信息

效果应用于不符合过滤器要求的要素。

更多信息FeatureEffect
Boolean更多信息

指示效果中排除的要素的标签是否可见。

更多信息FeatureEffect
FeatureFilter更多信息

驱动效果的过滤器。

更多信息FeatureEffect
Effect更多信息

效果应用于满足过滤器要求的要素。

更多信息FeatureEffect

属性详细说明

declaredClass Stringreadonly inherited

类名。类的名称声明格式为 geoscene.folder.className

excludedEffect Effect

效果应用于不符合过滤器要求的功能。Effect 允许您将 css filter-like 函数应用于 layerViews 创建自定义视觉效果以提高地图的制图质量。

示例:
示例代码:
const excludedEffect = "grayscale(50%) opacity(30%)";
layerView.effect = { // 转换成 FeatureEffect
  filter: {
    where: "1=1",
    geometry: mapPoint,
    spatialRelationship: "disjoint",
    distance: searchDistance,
    units: searchUnit
  },
   excludedEffect: excludedEffect
};
excludedLabelsVisible Boolean

指示效果中排除的要素的标签是否可见。

默认值:false
filter FeatureFilter

驱动效果的过滤器。满足过滤器中指定要求的功能将应用 includedEffect,而不满足过滤器要求的功能将应用 excludedEffect 已应用。

includedEffect Effect

效果应用于满足过滤器要求的要素。Effect 允许您将 css filter-like 函数应用于 layerViews 创建自定义视觉效果以提高地图的制图质量。

示例:
示例代码:
const includedEffect = "sepia(70%) saturate(150%) hue-rotate(320deg) opacity(60%)";
layerView.effect = new FeatureEffect({
  filter: { // 转换成 FeatureFilter
    where: "1=1",
    geometry: mapPoint,
    spatialRelationship: "disjoint",
    distance: searchDistance,
    units: searchUnit
  },
   includedEffect: includedEffect,
});

方法列表

属性 返回值类型 描述
FeatureEffect更多信息

创建 FeatureEffect 对象的深拷贝。

更多信息FeatureEffect
*更多信息

创建此类的新实例并使用从 GeoScene 产品生成的 JSON 对象的值对其进行初始化。

更多信息FeatureEffect
Object更多信息

将此类的实例转换为其 GeoScene portal JSON 格式。

更多信息FeatureEffect

方法详细说明

clone(){FeatureEffect}

创建 FeatureEffect 对象的深拷贝。

返回值:
类型 描述
FeatureEffect FeatureEffect 的新实例
fromJSON(json){*}static

创建此类的新实例,并使用从 GeoScene 产品生成的 JSON 对象的值对其进行初始化。传递给输入 json 参数的对象通常来自对 REST API 中的查询操作的响应,或者来自另一个 GeoScene产品的 toJSON() 方法。有关何时以及如何使用此函数的详细信息和示例,请参阅指南中的 使用 fromJSON() 主题。

参数:
json Object

实例的 json 表达式,以 geoscene 格式显示。

返回值:
类型 描述
* 返回一个该类的新实例。
toJSON(){Object}

将此类的实例转换为 GeoScene portal JSON 格式。 有关更多信息,请参阅 使用 fromJSON() 指南。

返回值:
类型 描述
Object 此类实例的 GeoScene portal JSON 格式。

类型定义

Effect Object[]|String
已弃用 从 4.21 版开始。请改用 Effect

Effect 提供各种滤镜功能,可以在图层或图层视图上执行,以实现类似于图像滤镜(照片应用程序)工作方式的不同视觉效果。CSS 过滤器支持作为 API 中的效果,具有以下功能 区别:

  • 不支持 url() css 过滤器。
  • 对于接受长度的效果,只允许绝对长度单位 .
  • 支持 bloom 效果。

支持以下效果:bloomblurbrightnesscontrastdrop-shadowgrayscalehue-rotateinvertopacitysaturatesepia。 可以通过两种不同的方式设置效果。它可以设置为字符串或对象数组。

已知限制

将效果设置为字符串

效果可以链接在一起,由空格字符分隔。效果按设置的顺序应用。当设置为字符串时,效果将应用于所有比例。

 //下面的效果将应用于所有尺度的图层
  //先应用亮度,然后是色调旋转,然后是对比度
  //改变效果的顺序会改变最终结果
 layer.effect = "brightness(5) hue-rotate(270deg) contrast(200%)";
将效果设置为对象数组

bloomdrop-shadow 等一些效果对比例很敏感。应使用与比例相关的效果来微调或控制不同比例的效果参数,以便产生所需的效果。比例相关的效果可以设置为对象数组,您可以在其中指定 scale 和该比例的效果 value。当您设置与比例相关的效果时,API 将在比例之间插入效果。例如,如果您将 opacity(0%) 设置为一种比例,而将 opacity(100%) 设置为另一种,API 将在不同比例之间插入 opacity 值。效果的类型和顺序应在所有尺度上保持一致,以便可以对其进行插值。如果类型和顺序不一致,效果将设置为null,并在控制台显示警告。

// 这是4622324比例的有效比例依赖效果,亮度下降后不会应用。
layerView.effect = {
  filter: featureFilter,
  includedEffect: [
    {
    scale: 36978595, // small scale
    value: "drop-shadow(3px, 3px, 4px) brightness(400%)",
   },
   {
    scale: 18489297, // large scale
    value: "drop-shadow(2px, 2px, 3px) brightness(200%)",
   },
   {
    scale: 4622324, // larger scale
    value: "drop-shadow(1px, 1px, 2px)",
   }
  ],
  // applied at all scales
  excludedEffect: "brightness(80%)"
};
// This is an illegal scale dependent effect.
// Scale dependent effects cannot be mixed like this.
// No effects will be applied to the layer.
// Invalid effect warning will be thrown in the console.
layer.effect = [
  {
    scale: 36978595,
    value: "opacity(50%)"
  },
  {
    scale: 4622324,
    value: "brightness(500%)"
  }
];
bloom
左图显示没有任何效果的原始图层。右边的地图显示了以下效果应用于地图中的两个图层的结果。
// hillshade layer is displayed under the water color layer
hillShadelayer.effect = "saturate(400%) contrast(100%) blur(10px)";
waterColorLayer.effect = "sepia(50%) saturate(100%) contrast(100%)";

如果 blendMode 和效果在图层上一起使用,效果将首先应用,然后是 blendMode

属性:
scale Number

视图的比例以产生效果。仅在设置比例相关效果时使用。

value String

在相应的 scale 处应用到图层或 layerView 的效果。仅在设置比例相关效果时使用。

示例:

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.