FeatureTemplatesViewModel

AMD: require(["geoscene/widgets/FeatureTemplates/FeatureTemplatesViewModel"], (FeatureTemplatesVM) => { /* code goes here */ });
ESM: import FeatureTemplatesVM from "@geoscene/core/widgets/FeatureTemplates/FeatureTemplatesViewModel";
类: geoscene/widgets/FeatureTemplates/FeatureTemplatesViewModel
继承于:FeatureTemplatesViewModel Accessor
起始版本:GeoScene Maps SDK for JavaScript 4.10

提供 FeatureTemplates 微件的逻辑。

另请参阅
示例
const templatesVM = new FeatureTemplatesViewModel({
  layers: layers
});

const featureTemplates = new FeatureTemplates({
  viewModel: templatesVM
  container: "templatesDiv"
});

构造函数

new FeatureTemplatesViewModel(properties)
参数
properties Object
optional

有关可能传递给构造函数的所有属性的列表,请参见属性

属性概述

可以设置、检索或侦听任何属性。请参阅使用属性主题。
显示继承属性 隐藏继承属性
名称 类型 描述
String

类的名称。

更多详情
Accessor
FilterFunction

可定义 Function 以帮助过滤微件内的模板项目

更多详情
FeatureTemplatesViewModel
String|GroupByFunction

可以对模板项目进行分组。

更多详情
FeatureTemplatesViewModel
TemplateItem[]|TemplateItemGroup[]

模板项目或分组的模板项目。

更多详情
FeatureTemplatesViewModel
FeatureLayer[]

与微件相关联的 Featurelayers 数组。

更多详情
FeatureTemplatesViewModel
String

微件的状态。

更多详情
FeatureTemplatesViewModel

属性详细信息

declaredClass Stringreadonly inherited

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

filterFunction FilterFunction

可定义 Function 以帮助过滤微件内的模板项目。搜索模板时,可使用自定义函数来帮助。它接受一个函数,该函数传入一个包含模板项目name 属性的对象。

featureTemplatesFilterFunction

示例
// Filter and display templates only if their names contain the word `Street`
function myFilterFunction(filter) {
  let containsName = filter.label.includes("Street");
  return containsName;
}

// Create the FeatureTemplates widget
const templates = new FeatureTemplates({
  container: "templatesDiv",
  visibleElements = {
    filter: false // does not display the default feature templates filter
  },
  layers: [featureLayer], // in this example, one layer is used
  filterFunction: myFilterFunction
});

可以对模板项目进行分组。这可帮助管理各种模板项以及它们在微件中的显示方式。下面将讨论这些值。

类型 描述 示例
layer 这是默认 分组。按图层对模板项目进行分组。 featureTemplatesGroupByLayer
geometry 按几何类型对模板项目进行分组。 FeatureTemplatesGroupByGeometry
none 微件在一个列表中显示所有内容,没有分组。 featureTemplatesGroupByLayer
GroupByFunction 自定义函数,采用包含 FeatureTemplateFeatureLayer 的对象。 FeatureTemplatesGroupByCustomGroupFunction
默认值:layer
示例
// This example shows using a function to check if
// the layer title contains the word 'military'. If so,
// return a group of items called "All Military Templates"
function customGroup(grouping) {
  // Consolidate all military layers
  if (grouping.layer.title.toLowerCase().indexOf("military") > -1) {
    return "All Military Templates"
  }
// Otherwise, group by layer title
  return grouping.layer.title;
}

// Create the FeatureTemplates widget
templates = new FeatureTemplates({
  container: "templatesDiv",
  layers: layers,
  groupBy: customGroup
});

模板项目或分组的模板项目。

与微件相关联的 Featurelayers 数组。这些图层在数组中的设置顺序决定了它们在微件中的显示方式。

该微件旨在仅显示启用编辑的图层。它不会显示启用仅编辑属性的图层。

示例
// The layers to display within the widget
let militaryUnits = new FeatureLayer({
  url: "http://sampleserver6.arcgisonline.com/geoscene/rest/services/Military/FeatureServer/2"
});

let militaryHostile = new FeatureLayer({
  url: "http://sampleserver6.arcgisonline.com/geoscene/rest/services/Military/FeatureServer/6"
});

let layers = [militaryUnits, militaryHostile];

// Create FeatureTemplates widget
templates = new FeatureTemplates({
  container: "templatesDiv",
  layers: layers
});
state Stringreadonly

微件的状态。下表列出了可能的值。

描述
ready 满足依赖关系并具有有效的属性值。
loading 图层仍在加载中,尚未准备好。
disabled 没有可加载的图层。

可能值"ready"|"loading"|"disabled"

默认值:disabled

方法概述

显示继承的方法 隐藏继承的方法
名称 返回值类值 描述

添加一个或多个与对象的生命周期相关联的句柄。

更多详情
Accessor
Boolean

在实例上触发事件。

更多详情
FeatureTemplatesViewModel
Boolean

指示实例上是否存在与提供的事件名称相匹配的事件监听器。

更多详情
FeatureTemplatesViewModel
Boolean

如果存在指定的句柄组,则返回 true。

更多详情
Accessor
Object

在实例上注册事件处理程序。

更多详情
FeatureTemplatesViewModel

此方法使用提供的过滤器更新模板项目

更多详情
FeatureTemplatesViewModel

移除对象拥有的句柄组。

更多详情
Accessor

选择要使用的模板项目

更多详情
FeatureTemplatesViewModel

方法详细说明

addHandles(handleOrHandles, groupKey)inherited
起始版本:GeoScene Maps SDK for JavaScript 4.25

添加一个或多个与对象的生命周期相关联的句柄。当对象被销毁时,将移除句柄。

// Manually manage handles
const handle = reactiveUtils.when(
  () => !view.updating,
  () => {
    wkidSelect.disabled = false;
  },
  { once: true }
);

// Handle gets removed when the object is destroyed.
this.addHandles(handle);
参数
handleOrHandles WatchHandle|WatchHandle[]

对象销毁后,标记为要移除的句柄。

groupKey *
optional

标识句柄应添加到的组的键。组中的所有句柄稍后都可使用 Accessor.removeHandles() 进行删除。如果未提供键,则句柄将被添加到默认组。

emit(type, event){Boolean}

在实例上触发事件。仅当创建此类的子类时,才应使用此方法。

参数
type String

事件的名称。

event Object
optional

事件有效负载。

返回
类型 描述
Boolean 如果监听器收到通知,则为true
hasEventListener(type){Boolean}

指示实例上是否存在与提供的事件名称相匹配的事件监听器。

参数
type String

事件的名称。

返回
类型 描述
Boolean 如果类支持输入事件,则返回 true。
hasHandles(groupKey){Boolean}inherited
起始版本:GeoScene Maps SDK for JavaScript 4.25

如果存在指定的句柄组,则返回 true。

参数
groupKey *
optional

组键。

返回
类型 描述
Boolean 如果存在指定的句柄组,则返回 true
示例
// Remove a named group of handles if they exist.
if (obj.hasHandles("watch-view-updates")) {
  obj.removeHandles("watch-view-updates");
}
on(type, listener){Object}

在实例上注册事件处理程序。调用此方法将事件与监听器挂钩。

参数

要侦听的事件或者事件数组。

listener Function

事件触发时要调用的函数。

返回
类型 描述
Object 返回具有 remove() 方法的事件处理程序,可调用该方法来停止侦听事件。
属性 类型 描述
remove Function 调用时,从事件中移除侦听器。
示例
view.on("click", function(event){
  // event is the event handle returned after the event fires.
  console.log(event.mapPoint);
});
refresh()

此方法使用提供的过滤器更新模板项目

removeHandles(groupKey)inherited
起始版本:GeoScene Maps SDK for JavaScript 4.25

移除对象拥有的句柄组。

参数
groupKey *
optional

要移除的组键或组键的数组或集合。

示例
obj.removeHandles(); // removes handles from default group

obj.removeHandles("handle-group");
obj.removeHandles("other-handle-group");
select(item)

选择要使用的模板项目

参数
optional

要进行选择的模板项目

另请参阅

事件概述

名称 类型 描述
{item: TemplateItem,template: FeatureTemplate}

选择模板项目时触发。

更多详情
FeatureTemplatesViewModel

事件详细说明

select

选择模板项目时触发。调用 select 方法时,将发生此事件。

属性

选定的模板项目。

与模板项目相关联的要素模板。

示例
// Listen for when a template item is selected
templatesVM.on("select", function(evtTemplate) {
  // Access the selected template item's attributes
  attributes = evtTemplate.template.prototype.attributes;

  // Create a new feature with the selected template at cursor location
  const handler = view.on("click", function(event) {
    handler.remove(); // remove click event handler.
    event.stopPropagation(); // stop click event propagation

    if (event.mapPoint) {
      // Create a new feature with the selected template item.
      editFeature = new Graphic({
        geometry: event.mapPoint,
          attributes: {
            "IncidentType": attributes.IncidentType
          }
      });

      // Setup the applyEdits parameter with adds.
      const edits = {
        addFeatures: [editFeature]
      };
      featureLayer.applyEdits(params).then(function(editsResult) {
        if (editsResult.addFeatureResults.length > 0) {
          console.log("Created a new feature.")
        }
      });
    }
  });
});

您的浏览器不再受支持。请升级您的浏览器以获得最佳体验。请参阅浏览器弃用帖子以获取更多信息