ArcGIS API for JavaScript开发之FeatureLayer

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.com/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.com/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"
   }, {
   
     n
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值