# ArcGisFeatureLayer
查阅Leaflet API

#### new mars2d.layer.ArcGisFeatureLayer(options)
plugins/mars2d-esri/ArcGisFeatureLayer.js 40

ArcGIS Server WFS矢量服务图层， 【需要引入mars2d-esri 插件库】

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | Object | 参数对象，包括以下：
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`url` | String |  | ArcGIS Server服务地址,如：https://sampleserver6.arcgisonline.com/arcgis/rest/services/Hurricanes/MapServer
`where` | String |  | 可选 用于过滤服务器端的特性的可选表达式。字符串值应该用单引号表示，即:"FIELDNAME = '字段值'";可以找到有关有效SQL语法的更多信息。
`minZoom` | Number |  | 可选 图层将显示在地图上的最远缩放级别。
`maxZoom` | Number |  | 可选 图层将显示在地图上的最近缩放级别。
`token` | String |  | 可选 如果您在服务需要传递令牌，它将包含在对服务的所有请求中。
`proxy` | String |  | 可选 代理服务URL
`useCors` | Boolean | `true` | 可选 如果此服务在发出 GET 请求时应使用 CORS。
`onEachFeature` | function |  | 可选 提供了一个机会来内省图层中的各个 GeoJSON 功能。
`symbol` | Object | function |  | 可选 矢量数据的style样式,为Function时是完全自定义的回调处理 symbol(attr, style, feature)
参数名称 | 类型 | 描述信息
--- | --- | ---
`type` | GraphicType | String | 可选 标识数据类型，默认是根据数据生成 point、polyline、polygon
`styleOptions` | Object | Style样式，每种不同类型数据都有不同的样式，具体见各`GraphicType`矢量数据的style参数。
`styleField` | String | 可选 按 styleField 属性设置不同样式。
`styleFieldOptions` | Object | 可选 按styleField值与对应style样式的键值对象。
`callback` | function | 可选 自定义判断处理返回style ，示例：callback: function (attr, styleOpt){ return { color: "#ff0000" }; }
`popup` | String | Array.<Globe.getTemplateHtml_template> | function |  | 可选 绑定的popup弹窗值，也可以bindPopup方法绑定，支持：'all'、数组、字符串模板
`popupOptions` | Map.PopupOptions |  | 可选 popup弹窗时的配置参数
`id` | String | Number | `createGuid()` | 可选 图层id标识
`pid` | String | Number | `-1` | 可选 图层父级的id，一般图层管理中使用
`name` | String | `''` | 可选 图层名称
`pane` | String | `'overlayPane'` | 可选 指定图层添加到地图的哪个pane的DIV中，用于控制不同层级显示的，优先级高于zIndex。

##### 参考:

- `支持的事件类型`

- 更多请参考L.esri.FeatureLayer类API

### 继承自

- L.esri.FeatureLayer

### 属性值

#### 只读 hasOpacity : boolean
plugins/mars2d-esri/ArcGisFeatureLayer.js 170

是否可以调整透明度

#### id : String|Number
plugins/mars2d-esri/ArcGisFeatureLayer.js 105

对象的id标识

#### 只读 isAdded : Boolean
plugins/mars2d-esri/ArcGisFeatureLayer.js 83

是否已添加到地图

#### name : String
plugins/mars2d-esri/ArcGisFeatureLayer.js 118

名称 标识

#### opacity : Number
plugins/mars2d-esri/ArcGisFeatureLayer.js 156

透明度

#### pid : String|Number
plugins/mars2d-esri/ArcGisFeatureLayer.js 92

对象的pid标识

#### show : Boolean
plugins/mars2d-esri/ArcGisFeatureLayer.js 131

显示隐藏状态

### 方法

#### addFeature(feature, callback, context) → ArcGisFeatureLayer
plugins/mars2d-esri/ArcGisFeatureLayer.js 520

向要素图层添加新要素。如果创建成功，这也会将该功能添加到地图中。

- 需要以有权在 ArcGIS Online 中编辑服务的用户或创建服务的用户身份进行身份验证。
- 需要Create在服务上启用该功能。您可以通过在功能下检查服务的元数据来检查创建是否存在。

参数名称 | 类型 | 描述信息
--- | --- | ---
`feature` | Object | GeoJSON Feature对象
`callback` | function | 可选 回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

当前对象本身，可以链式调用

#### deleteFeature(id, callback, context) → ArcGisFeatureLayer
plugins/mars2d-esri/ArcGisFeatureLayer.js 552

从要素图层中删除具有提供的 id 的要素。如果该要素存在，这也会从地图中删除该要素。

- 需要以有权在 ArcGIS Online 中编辑服务的用户或创建服务的用户身份进行身份验证。
- 需要Create在服务上启用该功能。您可以通过在功能下检查服务的元数据来检查创建是否存在。

参数名称 | 类型 | 描述信息
--- | --- | ---
`id` | String | Number | 要素的 id
`callback` | function | 可选 回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

当前对象本身，可以链式调用

#### deleteFeatures(ids, callback, context) → ArcGisFeatureLayer
plugins/mars2d-esri/ArcGisFeatureLayer.js 568

从要素层中删除具有提供的 id 的要素数组。这也会从地图中删除特征（如果存在）。

- 需要以有权在 ArcGIS Online 中编辑服务的用户或创建服务的用户身份进行身份验证。
- 需要Create在服务上启用该功能。您可以通过在功能下检查服务的元数据来检查创建是否存在。

参数名称 | 类型 | 描述信息
--- | --- | ---
`ids` | Array.<String> | Array.<Number> | 要素的id数组
`callback` | function | 可选 回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

当前对象本身，可以链式调用

#### eachGraphic(method, context) → GraphicLayer
plugins/mars2d-esri/ArcGisFeatureLayer.js 270

遍历所有矢量数据并将其作为参数传递给回调函数

参数名称 | 类型 | 描述信息
--- | --- | ---
`method` | function | 回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

当前对象本身,可以链式调用

##### 使用示例:

    fl.on('load', function  () {
      fl.eachGraphic(function(layer) {
        console.log(layer.feature);
      });
    }

#### flyTo(options) → ArcGisFeatureLayer
plugins/mars2d-esri/ArcGisFeatureLayer.js 350

定位地图至当前图层数据区域

参数名称 | 类型 | 描述信息
--- | --- | ---
`options` | Object | 可选 定位参数，包括:
参数名称 | 类型 | 默认值 | 描述信息
--- | --- | --- | ---
`paddingTopLeft` | L.Point | Array.<Number> |  | 可选 设置在将视图设置为适合边界时不应考虑的地图容器左上角的填充量。如果您在地图上有一些控件重叠式（如侧边栏），而且您不希望它们遮挡您正在缩放的对象，则很有用。
`paddingBottomRight` | L.Point | Array.<Number> |  | 可选 同上，不考虑地图容器右下角时使用。
`padding` | L.Point | Array.<Number> |  | 可选 相当于将左上和右下填充设置为相同的值。
`maxZoom` | Number |  | 可选 最大层级
`animate` | Boolean | `true` | 可选 是否进行动画缩放。false时始终重置视图完全没有动画。
`duration` | Number | `0.25` | 可选 动画平移的持续时间，以秒为单位。
`easeLinearity` | Number | `0.25` | 可选 平移动画宽松的曲率因子 Cubic Bezier curve曲线的第三个参数。1.0表示线性动画，而这个数字越小，曲线越鞠躬。
`noMoveStart` | Boolean | `false` | 可选 如果true，平移不会movestart在启动时触发事件（内部用于平移惯性）。

##### 返回值:

当前对象本身，可以链式调用

#### getBounds() → L.LatLngBounds
plugins/mars2d-esri/ArcGisFeatureLayer.js 314

获取图层矩形边界

##### 返回值:

矩形边界

#### getGraphicById(id) → L.Layer
plugins/mars2d-esri/ArcGisFeatureLayer.js 280

根据Feature 的 id取矢量数据对象

参数名称 | 类型 | 描述信息
--- | --- | ---
`id` | String | Number | Feature 的 id

##### 返回值:

矢量数据对象

#### getWhere() → String
plugins/mars2d-esri/ArcGisFeatureLayer.js 468

返回当前where设置

##### 返回值:

where设置

#### metadata(callback, context) → ArcGisFeatureLayer
plugins/mars2d-esri/ArcGisFeatureLayer.js 489

请求有关此要素图层的元数据。将使用error和调用回调metadata。

参数名称 | 类型 | 描述信息
--- | --- | ---
`callback` | function | 回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

当前对象本身，可以链式调用

##### 使用示例:

    featureLayer.metadata(function(error, metadata){
      console.log(metadata);
    });

#### query(callback, context) → Object
plugins/mars2d-esri/ArcGisFeatureLayer.js 503

返回L.esri.Query可用于查询此服务的新对象。

参数名称 | 类型 | 描述信息
--- | --- | ---
`callback` | function | 回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

L.esri.Query对象

##### 使用示例:

    featureLayer.query()
      .within(latlngbounds)
      .where("Direction = 'WEST'")
      .run(function(error, featureCollection){
        console.log(featureCollection);
      });

#### setOpacity(opacity) → ArcGisFeatureLayer
plugins/mars2d-esri/ArcGisFeatureLayer.js 290

设置覆盖的透明度

参数名称 | 类型 | 描述信息
--- | --- | ---
`opacity` | Number | 透明度，取值范围 0-1

##### 返回值:

当前对象本身,可以链式调用

#### setWhere(where, callback, context) → ArcGisFeatureLayer
plugins/mars2d-esri/ArcGisFeatureLayer.js 477

设置新where选项并刷新图层以反映新where过滤器。

参数名称 | 类型 | 描述信息
--- | --- | ---
`where` | String | where设置
`callback` | function | 可选 回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

当前对象本身，可以链式调用

#### updateFeature(feature, callback, context) → ArcGisFeatureLayer
plugins/mars2d-esri/ArcGisFeatureLayer.js 536

更新要素图层上提供的要素。这也会更新地图上的要素。

- 需要以有权在 ArcGIS Online 中编辑服务的用户或创建服务的用户身份进行身份验证。
- 需要Create在服务上启用该功能。您可以通过在功能下检查服务的元数据来检查创建是否存在。

参数名称 | 类型 | 描述信息
--- | --- | ---
`feature` | Object | GeoJSON Feature对象
`callback` | function | 可选 回调方法
`context` | Object | 可选 侦听器的上下文(this关键字将指向的对象)。

##### 返回值:

当前对象本身，可以链式调用

### 定义的类型

#### mars2d.layer.ArcGisFeatureLayer.EventType
plugins/mars2d-esri/ArcGisFeatureLayer.js 5

当前类支持的`EventType`事件类型（包括自定义字符串事件名）

##### 属性:

属性名称 | 类型 | 描述信息
--- | --- | ---
`loading` | String | 当新功能开始加载时触发。
`load` | String | 当地图当前边界中的所有要素都已加载时触发。
`createfeature` | String | 首次加载要素图层中的要素时触发
`removefeature` | String | 当图层上的要素从地图中移除时触发
`addfeature` | String | 当先前删除的要素添加回地图时触发
`click` | String | 当用户单击（or taps）地图时触发
`dblclick` | String | 当用户双击（or double-taps）地图时触发
`mousedown` | String | 当用户在图层上按下鼠标按钮时触发
`mouseover` | String | 当鼠标进入图层时触发
`mouseout` | String | 当鼠标离开图层时触发
`popupopen` | String | 当绑定到当前图层的Popup弹窗打开时触发
`popupclose` | String | 当绑定到当前图层的Popup弹窗关闭时触发
`requeststart` | String | 当对服务的请求开始时触发。
`requestend` | String | 当对服务的请求结束时触发。
`requestsuccess` | String | 当对服务的请求成功时触发。
`requesterror` | String | 当对服务的请求响应错误时触发。
`authenticationrequired` | String | 当对服务的请求失败并需要身份验证时，这将被触发。

##### 使用示例:

    //绑定监听事件
    tileLayer.on('load', function (event) {
      console.log('触发了事件',event)
    });

##### 参考:

- BaseClass#on
- BaseClass#off