admin管理员组

文章数量:1650782

ArcGIS API for JavaScript 开发

  • FeatureLayer
    • (1)创建一个FeatureLayer
    • (2)popupTemplate 弹出模板
    • (3)renderer 渲染器
    • (4)visible 可见的
    • (5)fields 字段
    • (6)outFields 字段
    • (7)listMode
    • (8)loaded
    • (9)opacity
    • (10)title
    • (11)geometryType
    • (12)definitionExpression
    • (13)createQuery()
    • (14)queryFeatures(query, options)
    • (15)queryObjectIds(query, options)
    • (16)where
    • (17)clone()

FeatureLayer

require(["esri/layers/FeatureLayer"], function(FeatureLayer) {
    /* code goes here */ });

FeatureLayer是一个可以从地图服务或功能服务创建的单层;ArcGIS在线或ArcGIS企业门户项目;或者来自客户端特性的数组。该层可以是空间层(具有地理特性),也可以是非空间层(表)。
空间层由离散的特征组成,每个特征都有一个几何图形,可以在2D MapView或3D SceneView中呈现为带有空间上下文的图形。特性还包含数据属性,提供关于它所代表的实际特性的附加信息;属性可以在弹出窗口中查看,并用于渲染层。可以查询、分析和呈现特征层,以便在空间上下文中可视化数据。
非空间层是一个没有表示地理特征的空间列的表。

(1)创建一个FeatureLayer

FeatureLayers可以通过以下三种方式之一创建:从服务URL创建、从ArcGIS门户项目ID创建,或者从客户端特性数组创建。
引用服务URL
要从服务创建FeatureLayer实例,必须将url属性设置为特性服务或映射服务中的层的REST端点。要使层在视图中可见,必须将其添加到视图引用的映射中。有关向映射添加层的信息,请参见map. add()。

require(["esri/layers/FeatureLayer"], function(FeatureLayer){
   
  const fl = new FeatureLayer({
   
    url: "https://sampleserver6.arcgisonline/arcgis/rest/services/Census/MapServer/3"
  });
  map.add(fl);  // 将图层添加到地图中
});

可以从服务中的表url创建非空间表实例,并且必须通过调用load()方法加载表。

// 添加一个非空间表。
require(["esri/layers/FeatureLayer"], function(FeatureLayer){
   
  const table = new FeatureLayer({
   
    url: "https://sampleserver6.arcgisonline/arcgis/rest/services/SF311/FeatureServer/1"
  });
  table.load().then(function() {
   
     // 表加载。准备在服务器上查询。
  });
});

如果从不同的域请求服务,则需要启用CORS的服务器或代理。
引用ArcGIS门户项目ID
如果它在ArcGIS Online或ArcGIS Enterprise中以项的形式存在,你还可以用它的ID创建一个FeatureLayer。例如,下面的代码片段展示了如何使用portalItem属性向映射添加一个新的FeatureLayer实例。

const fl = new FeatureLayer({
   
  portalItem: {
     
    id: "8444e275037549c1acab02d2626daaee"
  }
});
map.add(fl); 

添加客户端特性数组
客户端特性也可以用来创建特性层。因为FeatureLayer需要一个模式,所以在从特性数组创建一个层时需要设置几个属性。必须使用geometryType属性和一个有效的空间引用来指定特性的几何类型(因为每个层只允许一个几何类型)。objectId字段必须与字段对象数组一起指示,提供每个字段的模式。一旦指定了这些属性,就必须将特性数组设置为source属性。请查看使用客户端图形示例创建一个FeatureLayer,以查看实际情况。
如果在层初始化时缺少任何所需的参数,API将尝试从提供的参数中确定所需的参数。例如,可以根据提供给源属性的特性来确定spatialReference、geometryType、hasZ和hasM属性。但是,如果源属性在初始化时是一个空数组,则无法确定geometryType,该层将被拒绝。
如果特性是在运行时添加、删除或更新的,那么使用applye()来更新特性,然后使用queryFeatures()来返回更新的特性。请从FeatureLayer示例中查看添加或删除图形,以了解实际情况。属性值用于针对客户端特性层执行的属性查询,并且层视图区分大小写。

const layer = new FeatureLayer({
   

   // 为每个字段对象创建一个esri/layers/support/Field的实例object
   fields: [
   {
   
     name: "ObjectID",
     alias: "ObjectID",
     type: "oid"
   }, {
   
     name: "type",
     alias: "Type",
     type: "string"
   }, {
   
     nam

本文标签: APIArcGISFeatureLayerJavaScript