#### # new FeatureServer(options)

要素服务

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`options` | Object | 构造参数
`url` | String | 服务基地址，支持igs2.0的要素服务、矢量图层的要素查询以及矢量文档的要素查询

查看源代码 common/service/igs/FeatureServer.js, line 6

##### 示例

    //igs2.0的要素服务
    // ES5引入方式
    const { FeatureServer } = Zondy.Service
    // ES6引入方式
    import { FeatureServer } from "@mapgis/webclient-common"
    const featureServer = new FeatureServer({
      //服务地址，folder为IGS的服务管理中的文件夹夹名称，serviceName为发布的服务名
      url: 'http://192.168.88.12:8089/igs/rest/services/{folder}/{serviceName}/FeatureServer'
    })
    //基于矢量图层的要素查询
    const featureServer = new FeatureServer({
      //服务地址，IGS1.0地址
      url: 'http://localhost:6163/igs/rest/mrfs/layer'
      //服务地址，IGS2.0地址
      //url: 'http://localhost:8089/igs/rest/mrfs/layer'
    })
    //基于矢量文档的要素查询
    const featureServer = new FeatureServer({
      //服务地址，IGS1.0地址，serviceName为发布的服务名
      url: 'http://localhost:6163/igs/rest/mrfs/docs/{serviceName}'
      //服务地址，IGS2.0地址，serviceName为发布的服务名
      //url: 'http://localhost:8089/igs/rest/mrfs/docs/{serviceName}'
    })

### 继承关系

- BaseServer

### 成员变量

类型: Boolean

#### # clientId

客户端id

Inherited From:
  - BaseServer#clientId

查看源代码 common/service/BaseServer.js, line 70

类型: Boolean

#### # enableGlobeFetch

是否使用确据唯一的fetch对象，默认为true，当设为false时，会使用自己私有的fetch对象，所有的请求设置不会影响全局

Inherited From:
  - BaseServer#enableGlobeFetch

查看源代码 common/service/BaseServer.js, line 48

##### 示例

    //设置请求基地址
    // ES5引入方式
    const { BaseServer } = Zondy.Service
    // ES6引入方式
    import { BaseServer } from "@mapgis/webclient-common"
    let BaseServer = new BaseServer({
      //请求基地址
      url: '你的URL',
      //使用私有的fetch对象
      enableGlobeFetch: false,
      //此时设置token等属性，不会影响全局的fetch对象
      tokenValue: '你的token'
    });
    //继续使用全局fetch
    BaseServer.enableGlobeFetch = true;

类型: String

#### # headers

请求头参数

Inherited From:
  - BaseServer#headers

查看源代码 common/service/BaseServer.js, line 688

##### 示例

    //设置请求头参数
    // ES5引入方式
    const { BaseServer } = Zondy.Service
    // ES6引入方式
    import { BaseServer } from "@mapgis/webclient-common"
    let BaseServer = new BaseServer({
      //请求头
      headers: {
         //设置Content-Type为multipart/form-data
        'Content-Type': 'multipart/form-data',
         //设置token
        'token': '你的token'
      }
    });
    //动态修改
    BaseServer.headers.token = '新token';

类型: function

#### # requestInterceptor

请求发送拦截器

Inherited From:
  - BaseServer#requestInterceptor

查看源代码 common/service/BaseServer.js, line 582

##### 示例

    //设置拦截器，任何一个继承自BaseServer的对象都可以设置，全局唯一
    // ES5引入方式
    const { BaseServer,RequestInterceptor } = Zondy.Service
    // ES6引入方式
    import { BaseServer,RequestInterceptor } from "@mapgis/webclient-common"
    let BaseServer = new BaseServer({
      //设置请求发送拦截器
      requestInterceptor: new RequestInterceptor({
        //请求发送前进行统一处理
        before: function(config) {
          //执行你的业务逻辑
          //注意必须显示返回config对象，如果返回为空，则不发送请求
          return config;
        },
        //请求发送失败时进行统一处理
        failure: function(error) {
          //执行你的业务逻辑
        }
      })
    });
    //动态修改
    BaseServer.requestInterceptor.before = function() {};

类型: String

#### # requestTimeout

请求超时时间，默认45000ms，即45s

Inherited From:
  - BaseServer#requestTimeout

查看源代码 common/service/BaseServer.js, line 660

##### 示例

    //设置超时时间
    //初始化AddressServer服务对象
    // ES5引入方式
    const { BaseServer } = Zondy.Service
    // ES6引入方式
    import { BaseServer } from "@mapgis/webclient-common"
    let BaseServer = new BaseServer({
      //超时时间
      requestTimeout: 2000
    });
    //动态修改
    BaseServer.requestTimeout = 3000;

类型: function

#### # responseInterceptor

请求响应拦截器

Inherited From:
  - BaseServer#responseInterceptor

查看源代码 common/service/BaseServer.js, line 620

##### 示例

    //设置拦截器，任何一个继承自BaseServer的对象都可以设置，全局唯一
    // ES5引入方式
    const { BaseServer,ResponseInterceptor } = Zondy.Service
    // ES6引入方式
    import { BaseServer,ResponseInterceptor } from "@mapgis/webclient-common"
    let BaseServer = new BaseServer({
      //设置请求响应拦截器
      responseInterceptor: new ResponseInterceptor({
        //执行请求响应，接口调用成功时会执行的回调
        success: function(result) {
          //执行你的业务逻辑
          //注意必须显示返回result对象，如果返回为空，则不执行请求响应成功回调
          return result;
        },
        //请求响应成功，接口调用失败时会执行的函数
        failure: function(result) {
          //执行你的业务逻辑
          //注意必须显示返回result对象，如果返回为空，则不执行回调韩式
          return result;
        }
      })
    });
    //动态修改
    BaseServer.responseInterceptor.success = function() {};

类型: TokenAttachType

#### # tokenAttachType

指定token附加到何处

Inherited From:
  - BaseServer#tokenAttachType

查看源代码 common/service/BaseServer.js, line 774

##### 示例

    //设置token值
    // ES5引入方式
    const { BaseServer } = Zondy.Service
    const { TokenAttachType } = Zondy.Enum
    // ES6引入方式
    import { BaseServer,TokenAttachType } from "@mapgis/webclient-common"
    let BaseServer = new BaseServer({
      //token名
      tokenValue: '你的token值',
      //token值
      tokenValue: '你的token值',
      //指定token附加到url后面
      tokenAttachType: TokenAttachType.url
    });
    //动态修改
    BaseServer.tokenAttachType = TokenAttachType.header;

类型: String

#### # tokenKey

token名

Inherited From:
  - BaseServer#tokenKey

查看源代码 common/service/BaseServer.js, line 720

##### 示例

    //设置token名
    // ES5引入方式
    const { BaseServer } = Zondy.Service
    // ES6引入方式
    import { BaseServer } from "@mapgis/webclient-common"
    let BaseServer = new BaseServer({
      //token名
      tokenKey: '你的tokenKey'
    });
    //动态修改
    BaseServer.tokenKey = '新tokenKey';

类型: String

#### # tokenValue

token值

Inherited From:
  - BaseServer#tokenValue

查看源代码 common/service/BaseServer.js, line 747

##### 示例

    //设置token值
    // ES5引入方式
    const { BaseServer } = Zondy.Service
    // ES6引入方式
    import { BaseServer } from "@mapgis/webclient-common"
    let BaseServer = new BaseServer({
      //token值
      tokenValue: '你的token值'
    });
    //动态修改
    BaseServer.tokenValue = '新token值';

类型: String

#### # url

服务基地址

Inherited From:
  - BaseServer#url

查看源代码 common/service/BaseServer.js, line 26

##### 示例

    //设置请求基地址
    // ES5引入方式
    const { BaseServer } = Zondy.Service
    // ES6引入方式
    import { BaseServer } from "@mapgis/webclient-common"
    let BaseServer = new BaseServer({
      //请求基地址
      url: '你的URL'
    });
    //动态修改
    BaseServer.url = '新URL';

### 方法

#### # addFeature(options, GDBPOptions, DocOptions)

指定图层的要素添加，支持IGS2.0的要素添加服务、基于矢量图层的要素添加服务以及基于矢量文档的要素添加

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` |  |  | 指定图层的要素添加参数，IGS2.0参数
`layerId` | String | 0 | 图层id，必传
`method` | String | FetchMethod.get | 请求类型
`success` | function |  | 查询成功回调函数，若使用Promise方式则不必填写
`failure` | function |  | 查询失败回调函数，若使用Promise方式则不必填写
`features` | Array | [] | 要添加的要素集合
`GDBPOptions` |  |  | 基于矢量图层的新增要素参数
`gdbp` | String |  | gdbp的url，仅支持单个数据库的要素新增，必传
`featureSet` | Object |  | 要更新的要素集合，注意是igs1.0的格式，必传
`DocOptions` |  |  | 基于矢量文档的新增要素参数
`mapIndex` | String |  | 地图在文档下的序号，必传
`featureSet` | Object |  | 要更新的要素集合，注意是igs1.0的格式，必传

查看源代码 common/service/igs/FeatureServer.js, line 810

返回值:

添加要素结果

类型: Promise.<Object>

##### 示例

##### IGS2.0的要素新增示例

    // 创建一个线要素
    // ES5引入方式
    const { Feature } = Zondy
    // ES6引入方式
    import { Feature } from "@mapgis/webclient-common"
    const lineString = new Feature({
      //可填空或者和数据库中的表结构一一对应
      attributes: {},
      //可填空或者和系统库中的样式一一对应
      symbol: {},
      //设置几何
      geometry: new Zondy.Geometry.LineString({
        coordinates: [
          [110.74, 32.41],
          [112.89, 31.06],
          [110.15, 30.16]
        ]
      })
    })

    // 添加要素
    featureServer.addFeature({
       // 指定图层id
       layerId: '0',
       // 要添加的要素，可以添加多个要素
       features: [lineString]
     })
    .then((res) => {
      //成功回调函数
      console.log('添加要素: ', res)
    })
    .catch((res) => {
      //失败回调函数
      console.log('添加要素失败: ', res)
    })

##### 基于矢量图层的要素新增示例

    // 初始化资源服务
    // ES5引入方式
    const { ResourceServer} = Zondy.Service
    const { Point} = Zondy.Geometry
    const { Feature } = Zondy
    // ES6引入方式
    import { ResourceServer,Point,Feature } from "@mapgis/webclient-common"
    const resourceServer = new ResourceServer({
      // 目录服务基地址，port可填6163(.net服务)或者8089(Java服务)
      url: 'http://localhost:6163/igs/rest/mrcs'
    })
    // 查询数据库表结构
    resourceServer.queryGDBPInfo({
      // 要查询的gdbp的url
      gdbpUrl: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
    })
    .then((result) => {
      // 表结构为result.data.FieldAtt
      // 创建一个要素
      const feature = new Feature({
        // 设置要素id，若id已在数据库中存在，则自增id
        id: 0,
        // 设置几何，支持点、多点、线、多线、区、多区
        geometry: new Point({
          coordinates: [110.66482, 31.747766]
        }),
        // 这里的属性一定要和数据库的表结构一一对应，顺序也不能出错
        attributes: {
          "CODE": "1",
          "NAME": "神龙架林区",
          "mpLayer": "0"
        },
        //设置样式
        symbol: {
          SymID": 43,
          SymHeight": 3.200000047683716,
          SymWidth": 3.200000047683716,
          Angle": 0,
          Color": 1467,
          Color1": 4,
          Color2": 3,
          Space": 1,
          OutPenW": [
            0.1,
            0.05,
            0.05
          ]
        }
      })
      // 创建新增要素的结构体
      const featureSet = {
        // 设置表结构，必填
        AttStruct: result.data.FieldAtt,
        // 设置要添加的要素，客串多个要素
        SFEleArray: [feature.toOldIGSFeature()]
      }
      // 添加要素
      featureServer.addFeature({
        // 新增要素的结构体
        featureSet: featureSet,
        // gdbo地址，仅支持单表添加
        gdbp: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
      })
      .then((result) => {
         console.log('新增要素成功：', result);
      })
      .catch((result) => {
          console.log('新增要素失败：', result);
      })
    })
    .catch((result) => {
        console.log('查询GDBO失败：', result);
    })

##### 基于矢量文档的要素新增示例

    // 初始化资源服务
    // ES5引入方式
    const { MultiPoint} = Zondy.Geometry
    const { Feature } = Zondy
    // ES6引入方式
    import { MultiPoint,Feature } from "@mapgis/webclient-common"
    const resourceServer = new ResourceServer({
      // 目录服务基地址，port可填6163(.net服务)或者8089(Java服务)
      url: 'http://localhost:6163/igs/rest/mrcs'
    })
    // 查询数据库表结构
    resourceServer.queryGDBPInfo({
      // 要查询的gdbp的url
      gdbpUrl: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
    })
    .then((result) => {
      // 创建一个要素
      const feature = new Feature({
        // 设置要素id，若id已在数据库中存在，则自增id
        id: 0,
        // 设置几何，支持点、多点、线、多线、区、多区
        geometry: new MultiPoint({
          coordinates: [
            [109.47509, 30.270342],
            [111.27724, 30.706085]
          ]
        }),
        // 这里的属性一定要和数据库的表结构一一对应
        attributes: {
          "CODE": "0",
          "Name": "测试点多点2",
          "mpLayer": "0"
        },
        // 设置样式
        symbol: {
          "SymID": 43,
          "SymHeight": 3.200000047683716,
          "SymWidth": 3.200000047683716,
          "Angle": 0,
          "Color": 1467,
          "Color1": 4,
          "Color2": 3,
          "Space": 1,
          "OutPenW": [
            0.1,
            0.05,
            0.05
          ]
        }
      })

      // 创建新增要素的结构体
      const featureSet = {
       // 设置表结构，必填
        AttStruct: result.data.FieldAtt,
        // 设置要添加的要素，客串多个要素
        SFEleArray: [feature.toOldIGSFeature()]
      }

      // 添加要素
      featureServer.addFeature({
        // 新增要素的结构体
        featureSet: featureSet,
        // 地图在文档下的序号，从0开始编号
        mapIndex: 0,
        // 图层序号，从0开始编号
        layerIndex: 2
      })
      .then((result) => {
        console.log('新增要素成功：', result);
      })
      .catch((result) => {
        console.log('新增要素失败：', result);
      })
    })
    .catch((result) => {
        console.log('查询GDBO失败：', result);
    })

#### # deleteFeature(options, GDBPOptions, DocOptions)

指定图层的要素删除，支持IGS2.0的要素删除服务、基于矢量图层的要素删除服务以及基于矢量文档的要素删除服务

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` |  |  | 指定图层的要素删除参数，IGS2.0参数
`layerId` | String |  | 图层id，必传
`method` | String | FetchMethod.get | 请求类型
`success` | function |  | 查询成功回调函数，若使用Promise方式则不必填写
`failure` | function |  | 查询失败回调函数，若使用Promise方式则不必填写
`objectIds` | String |  | 过滤id，多个用英文逗号分隔（使用大数据作为数据源发布的要素服务，该参数是唯一有效参数）
`where` | String |  | 属性条件,类SQL语句
`geometry` | Geometry |  | 空间几何条件
`distance` | Number |  | 几何缓冲的距离，geometry为点、线时有效
`returnDeleteResults` | Boolean | true | 是否返回每个要素删除的结果，默认为true，如果要高效的批量删除，应设置为false
`GDBPOptions` |  |  | 基于矢量图层的要素删除
`gdbp` | String |  | 图层的gdbp地址，允许多个图层，图层间用“;”号分隔，必填，例如： gdbp=gdbp://MapGisLocal/示例数据/ds/世界地图/sfcls/海洋陆地;gdbp://sa@SqlServerGIS/MPDBMASTER/ds/兰伯特(全国)_400万/sfcls/中国地级县
`objectIds` | String |  | 需要删除的要素的OID值，OID为要素的唯一标识码，一个图层可包含多个objectIds间以“,”分隔，可包含多个图层，各个图层的objectIds间以“;”分隔，必填，lieu： objectIds=1,2,3;2,3,4;8
`DocOptions` |  |  | 基于矢量文档的要素删除
`mapIndex` | String |  | 地图在文档下的序号，从0开始编号，必填
`layerIndex` | String |  | 图层序号，从0开始编号，必填
`objectIds` | String |  | 要删除的要素id，多个id以','分割，必填

查看源代码 common/service/igs/FeatureServer.js, line 984

返回值:

返回要素删除结果

类型: Promise.<Object>

##### 示例

##### IGS2.0的要素删除示例

    // 删除要素
    featureServer.deleteFeature({
      // 图层id
      layerId: '0',
      // 压迫删除的要素id，多个要素id以','分割
      objectIds: '0,1,2,3,5,6'
    })
    .then((res)=>{
      console.log('要素删除成功：', res);
    })
    .catch((res)=>{
      console.log('要素删除失败：', res);
    })

##### 基于矢量地图的要素删除示例

    // 删除要素
    featureServer.deleteFeature({
      // gdbp的url
      gdbp: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地',
      // 要删除的要素id，多个id以','分割
      objectIds: '18053'
    })
    .then((res)=>{
      console.log('要素删除成功：', res);
    })
    .catch((res)=>{
      console.log('要素删除失败：', res);
    })

##### 基于基于矢量文档的要素删除示例

    // 删除要素
    featureServer.deleteFeature({
      // 地图在文档下的序号，从0开始编号
      mapIndex: 0,
      // 图层序号，从0开始编号
      layerIndex: 2,
      // 要删除的要素id，多个id以','分割
      objectIds: '18057'
    })
    .then((res)=>{
      console.log('要素删除成功：', res);
    })
    .catch((res)=>{
      console.log('要素删除失败：', res);
    })

#### # queryFeatureById(options)

根据id获取指定图层指定要素，IGS2.0新增服务

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` |  |  | 获取指定图层指定要素参数
`layerId` | String |  | 图层id，必传
`featureId` | Array |  | 要素id，必传
`method` | String | FetchMethod.get | 请求类型
`success` | function |  | 查询成功回调函数，若使用Promise方式则不必填写
`failure` | function |  | 查询失败回调函数，若使用Promise方式则不必填写

查看源代码 common/service/igs/FeatureServer.js, line 1415

返回值:

返回指定图层指定要素

类型: Promise.<Object>

##### 示例

##### 根据id获取指定图层指定要素

    featureServer.queryFeatureById({
      // 图层id
      layerId: '0',
      // 要素id
      featureId: '437'
    })
    .then((res) => {
      console.log('要素查询成功：', res)
    })
    .catch((res) => {
      console.log('要素查询失败：', res)
    })

#### # queryFeatures(options)

指定图层的要素查询,支持IGS2.0,IGS1.0服务

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` |  |  | 要素查询参数，IGS2.0服务
`layerId` | String |  | 图层id, 必传
`method` | String | FetchMethod.get | 请求类型
`success` | queryLayerInfoSuccess |  | 查询成功回调函数，若使用Promise方式则不必填写
`failure` | queryFailure |  | 查询失败回调函数，若使用Promise方式则不必填写
`geometry` | Geometry |  | 要素查询几何条件
`geometryType` | String |  | 要素查询类型
`where` | String |  | 要素查询where条件
`outFields` | String |  | 输出属性字段，可为*表示所有，多个用英文逗号分隔
`objectIds` | String |  | 过滤id，多个用英文逗号分隔(参数优先级很高，可能导致其它筛选条件失效)
`distance` | Number | 0 | 仅igs2.0支持，几何缓冲的距离，geometry为point、line时有效（若数据源为大数据PG数据，且geometryType为line或者point时为必填数据）
`geometryPrecision` | Number |  | 返回要素几何信息中坐标xy的精度
`rule` | Object |  | 仅1.0支持,rule={"CompareRectOnly":false,"MustInside":false,"Intersect":true},查询规则参数，JSON格式，CompareRectOnly为是否仅仅比较查询对象的外包络矩形框，MustInside为查询对象是否必须完全包含在输入的空间范围内，Intersect为是否与查询对象相交
`isAsc` | Boolean |  | 仅1.0支持,是否升序排列,格式:true/false
`spatialRel` | SpatialRelation |  | 仅igs2.0支持，几何条件的空间判定规则，Intersects(相交)、EnvelopeIntersects(外包矩形相交)、Contains(包含)、Disjoint(相离)
`orderByFields` | String |  | 排序字段,格式: fieldName [ASC|DESC]
`groupByFieldsForStatistics` | String | Array.<Object> |  | igs2.0 分组统计的字段信息,格式为field1,field2;igs1.0 进行分组的字段以计算统计信息，示例：[{"LayerIndex": 0,"GroupFieldName": "NAME"}]
`resultRecordCount` | Number | 20 | 分页参数：结果返回条数，默认20
`resultOffset` | Number |  | 分页参数：跳过条数
`outStatistics` | Array |  | 计算一个或多个基于字段的统计信息结构,统计类型包括:FUNCTION_MAX/FUNCTION_MIN/FUNCTION_SUM/FUNCTION_AVG/FUNCTION_COUNT/FUNCTION_MAX_OID，示例："[{"statisticType": "FUNCTION_SUM","onStatisticField": "field1","outStatisticFieldName":"fieldName1"}]"
`returnGeometry` | Boolean | true | 是否返回几何，默认为true
`returnAttribute` | Boolean | true | 是否返回属性，默认为true
`returnStyle` | Boolean | false | 是否返回图形参数信息，默认为false
`returnIdsOnly` | Boolean | false | 仅igs2.0支持，是否只返回id，默认为false
`returnCountOnly` | Boolean | false | 仅igs2.0支持，是否只返回条数，默认为false
`returnExtentOnly` | Boolean | false | 仅igs2.0支持，是否只返回范围，默认为false
`returnZ` | Boolean | false | 是否返回Z轴，默认为false

查看源代码 common/service/igs/FeatureServer.js, line 130

返回值:

返回指定图层要素查询结果

类型: Promise.<Object>

##### 示例

##### IGS2.0的where查询

    featureServer.queryFeatures({
      // 图层id
      layerId: '1',
      // where语句
      where: "NAME='天门市'"
    })
    .then((res)=>{
        console.log('查询成功：', res)
    })
    .catch((res)=>{
        console.log('查询失败：', res)
    })

#### # queryFeaturesInLayers(options, GDBPOptions, DocsOptions)

全图层要素查询，支持igs2.0、igs1.0

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` |  |  | 全图层要素查询参数
`method` | String | FetchMethod.get | 请求类型
`success` | queryLayerInfoSuccess |  | 查询成功回调函数，若使用Promise方式则不必填写
`failure` | queryFailure |  | 查询失败回调函数，若使用Promise方式则不必填写
`layerDefs` | Array |  | 多图层的属性条件,包括layerId、where、outFields；当值为空时，查询所有图层，并当为拉框查询时，自动过滤不需要不需要查询的图层，示例："[{ "layerId":"0-0","where": "name='中国'", "outfields": "field1,field2"}]"
`geometry` | Geometry |  | 要素查询几何条件
`distance` | Number | 0 | 几何缓冲的距离，geometry为point、line时有效（若数据源为大数据PG数据，且geometryType为line或者point时为必填数据）
`geometryPrecision` | Number |  | 返回要素几何信息中坐标xy的精度
`spatialRel` | SpatialRelation |  | 几何条件的空间判定规则，Intersects(相交)、EnvelopeIntersects(外包矩形相交)、Contains(包含)、Disjoint(相离)
`resultRecordCount` | Number | 20 | 分页参数：结果返回条数，默认20
`returnGeometry` | Boolean | true | 是否返回几何，默认为true
`returnAttribute` | Boolean | true | 是否返回属性，默认为true
`returnStyle` | Boolean | false | 是否返回图形参数信息，默认为false
`returnIdsOnly` | Boolean | false | 是否只返回id，默认为false
`returnCountOnly` | Boolean | false | 是否只返回条数，默认为false
`returnZ` | Boolean | false | 是否返回Z轴，默认为false
`GDBPOptions` |  |  | 基于矢量图层的要素查询参数
`gdbp` | String |  | 图层的gdbp地址，允许多个图层，图层间用“，”号分隔，必传
`geometry` | Geometry |  | 几何查询条件
`where` | String |  | where查询条件，类似sql语句
`objectIds` | String |  | 需要查询的要素的OID值，OID为要素的唯一标识码，多个objectIds间以“,”分隔
`page` | Number | 0 | 返回的要素分页的页数，默认返回第0页
`pageCount` | Number | 20 | 要素结果集每页的记录数量，默认为20条/页
`rule` | Object |  | 指定查询规则，参数不区分大小写，各参数的代表含义如下： CompareRectOnly表示是否仅比较要素的外包矩形，来判定是否与几何约束图形有交集；EnableDisplayCondition表示是否将隐藏图层计算在内；MustInside表示是否完全包含；Intersect表示是否相交
`structs` | Object |  | 指定查询结果的结构，参数不区分大小写，可以省略，默认为IncludeAttribute:true，其他参数均为false；IncludeAttribute：是否包含属性信息；IncludeGeometry：是否包含空间信息；IncludeWebGraphic：是否包含图形信息（显示参数信息）
`orderField` | String |  | 排序字段名称，用于对输出结果进行排序，当ObjectIds有值时，orderField失效
`isAsc` | Boolean |  | 按照字段进行排序时，是否升序排列
`DocsOptions` |  |  | 基于矢量文档的要素查询
`mapIndex` | Number |  | 地图在文档下的序号，从0开始编号，必传
`layerIndexes` | String |  | 图层序号，多图层间以“,”号分隔，必传
`geometry` | Geometry |  | 几何查询条件
`where` | String |  | where查询条件，类似sql语句
`objectIds` | String |  | 需要查询的要素的OID值，OID为要素的唯一标识码，多个objectIds间以“,”分隔
`page` | Number | 0 | 返回的要素分页的页数，默认返回第0页
`pageCount` | Number | 20 | 要素结果集每页的记录数量，默认为20条/页
`rule` | Object |  | 指定查询规则，参数不区分大小写，各参数的代表含义如下： CompareRectOnly表示是否仅比较要素的外包矩形，来判定是否与几何约束图形有交集；EnableDisplayCondition表示是否将隐藏图层计算在内；MustInside表示是否完全包含；Intersect表示是否相交
`structs` | Object |  | 指定查询结果的结构，参数不区分大小写，可以省略，默认为IncludeAttribute:true，其他参数均为false；IncludeAttribute：是否包含属性信息；IncludeGeometry：是否包含空间信息；IncludeWebGraphic：是否包含图形信息（显示参数信息）
`orderField` | String |  | 排序字段名称，用于对输出结果进行排序，当ObjectIds有值时，orderField失效
`isAsc` | Boolean |  | 按照字段进行排序时，是否升序排列

查看源代码 common/service/igs/FeatureServer.js, line 403

返回值:

返回要素查询结果

类型: Promise.<Object>

##### 示例

##### IGS2.0的几何查询

    featureServer.queryFeaturesInLayers({
    // ES5引入方式
    const { Polygon } = Zondy.Geometry
    // ES6引入方式
    import { Polygon } from "@mapgis/webclient-common"
      // 几何查询条件
      geometry: new Polygon({
        coordinates: [
          [
            [110.74, 32.41],
            [112.89, 31.06],
            [110.15, 30.16],
            [110.74, 32.41]
          ]
        ]
      })
    })
    .then((res)=>{
      console.log('查询成功：', res);
    })
    .catch((res)=>{
      console.log('查询失败：', res);
    })

##### 基于矢量文档的where查询

    featureServer.queryFeaturesInLayers({
      // 地图在文档下的序号，从0开始编号
      mapIndex: 0,
      // 图层序号，多图层间以“,”号分隔
      layerIndexes: '1',
      // where查询条件
      where: "NAME='黄石市'"
    })
    .then((res)=>{
      console.log('查询成功：', res);
    })
    .catch((res)=>{
      console.log('查询失败：', res);
    })

##### 基于矢量图层的where查询

    featureServer.queryFeaturesInLayers({
      // 图层的gdbp地址，允许多个图层，图层间用“，”号分隔
      gdbp: 'gdbp://MapGisLocalPlus/ClientTheme/ds/epsg4326/sfcls/湖北省市级区划2',
      // where查询条件
      where: "NAME='天门市'",
    })
    .then((res)=>{
      console.log('查询成功：', res);
    })
    .catch((res)=>{
      console.log('查询失败：', res);
    })

#### # queryLayerInfo(options)

获取要素服务图层信息，支持IGS1.0,IGS2.0

#### 参数:

名称 | 类型 | 描述
--- | --- | ---
`options` |  | 查询参数
`layerId` | String | 图层id，必传
`success` | function | 查询成功回调函数，若使用Promise方式则不必填写
`failure` | function | 查询失败回调函数，若使用Promise方式则不必填写

查看源代码 common/service/igs/FeatureServer.js, line 68

返回值:

返回要素服务图层信息

类型: Promise.<Object>

##### 示例

##### 获取要素服务图层信息

    featureServer.queryLayerInfo({
      // 图层id
      layerId: '0'
    })
    .then((res)=>{
      console.log('查询图层信息成功：', res)
    })
    .catch((res)=>{
      console.log('查询图层信息失败：', res)
    })

#### # queryServerInfo(options)

获取服务信息，IGS2.0新增服务

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` |  |  | 查询参数
`success` | function | 无 | 查询成功回调函数，若使用Promise方式则不必填写
`failure` | function | 无 | 查询失败回调函数，若使用Promise方式则不必填写

Inherited From:
  - BaseServer#queryServerInfo

查看源代码 common/service/BaseServer.js, line 157

##### 示例

##### 获取服务信息-回调方式

    server.queryServerInfo({
      success: function (result) {
        console.log('请求成功：', result);
      },
      failure: function (result) {
        console.log('请求失败：', result);
      }
    });

##### 获取服务信息-promise方式

    server.queryServerInfo({
    })
    .then(function (result) {
      console.log('请求成功：', result);
    }).catch(function (result) {
      console.log('请求失败：', result);
    });

#### # updateFeature(options, GDBPOptions)

指定图层的要素更新，支持IGS2.0的要素更新服务、基于矢量图层的要素更新服务以及基于矢量文档的要素更新服务

#### 参数:

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` |  |  | 指定图层的要素更新参数，IGS2.0服务参数
`layerId` | String |  | 图层id，必传
`method` | String | FetchMethod.get | 请求类型
`success` | function |  | 查询成功回调函数，若使用Promise方式则不必填写
`failure` | function |  | 查询失败回调函数，若使用Promise方式则不必填写
`features` | Array | [] | 要更新的要素集合，需要注意要素属性必须携带FID字段才能更新
`GDBPOptions` |  |  | 基于矢量图层的要素更新参数
`gdbp` | String |  | gdbp的url，仅支持单个数据库的要素更新，必传
`featureSet` | Object |  | 要更新的要素集合，注意是igs1.0的格式，必传

查看源代码 common/service/igs/FeatureServer.js, line 1285

返回值:

返回图层更新结果

类型: Promise.<Object>

##### 示例

##### IGS2.0的要素更新示例

    // 创建线要素
    // ES5引入方式
    const { Feature } = Zondy
    const { LineString } = Zondy.Geometry
    // ES6引入方式
    import { Feature } from "@mapgis/webclient-common"
    const lineString = new Feature({
      // 更新要素时需要传一个FID来指定要素，其他的属性值可以根据需求来盖面
      attributes: { FID:'0' },
      // 更新样式
      symbol: {},
      // 更新几何，注意几何一定要是GDBP表对应的几何类型
      geometry: new LineString({
        coordinates: [
          [110.74, 32.41],
          [112.89, 31.06],
          [110.15, 30.16]
        ]
      })
    })
    // 更新线要素
    featureServer.updateFeature({
      // 图层id
      layerId: '1',
      // 要更新的要素，支持一次更新多个要素
      features: [lineString]
    })
    .then((res) => {
      console.log('要素更新成功: ', res)
    })
    .catch((res) => {
      console.log('要素更新失败: ', res)
    })

##### 基于矢量图层的要素更新示例

    // 初始化资源服务
    // ES5引入方式
    const { ResourceServer } = Zondy.Service
    const { Feature } = Zondy
    const { Point } = Zondy.Geometry
    // ES6引入方式
    import { ResourceServer,Feature, Point} from "@mapgis/webclient-common"
    const resourceServer = new ResourceServer({
      // 目录服务基地址，port可填6163(.net服务)或者8089(Java服务)
      url: 'http://localhost:6163/igs/rest/mrcs'
    })
    // 查询数据库表结构
    resourceServer.queryGDBPInfo({
      // 要查询的gdbp的url
      gdbpUrl: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
    })
    .then((result) => {
      // 表结构为result.data.FieldAtt
      // 创建一个要素
      const feature = new Feature({
        // 设置更新要素的id
        id: 1220,
        // 设置几何，支持点、多点、线、多线、区、多区
        geometry: new Point({
          coordinates: [110.66482, 31.747766]
        }),
        // 更新属性
        attributes: {
          "CODE": "1",
          "NAME": "新的神龙架林区",
          "mpLayer": "0"
        },
        //更新样式
        symbol: {
          SymID": 43,
          SymHeight": 3.200000047683716,
          SymWidth": 3.200000047683716,
          Angle": 0,
          Color": 1467,
          Color1": 4,
          Color2": 3,
          Space": 1,
          OutPenW": [
            0.1,
            0.05,
            0.05
          ]
        }
      })
      // 创建更新要素的结构体
      const featureSet = {
        // 设置表结构，必填
        AttStruct: result.data.FieldAtt,
        // 设置要添加的要素，客串多个要素
        SFEleArray: [feature.toOldIGSFeature()]
      }
      // 更新要素
      featureServer.updateFeature({
        // 更新要素的结构体
        featureSet: featureSet,
        // gdbo地址，仅支持单表添加
        gdbp: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
      })
      .then((result) => {
         console.log('更新要素成功：', result);
      })
      .catch((result) => {
          console.log('更新要素失败：', result);
      })
    })
    .catch((result) => {
        console.log('查询GDBO失败：', result);
    })

##### 基于矢量文档的要素更新示例

    // 初始化资源服务
    // ES5引入方式
    const { ResourceServer } = Zondy.Service
    const { Feature } = Zondy
    const { MultiPoint } = Zondy.Geometry
    // ES6引入方式
    import { ResourceServer,Feature,MultiPoint } from "@mapgis/webclient-common"
    const resourceServer = new ResourceServer({
      // 目录服务基地址，port可填6163(.net服务)或者8089(Java服务)
      url: 'http://localhost:6163/igs/rest/mrcs'
    })
    // 查询数据库表结构
    resourceServer.queryGDBPInfo({
      // 要查询的gdbp的url
      gdbpUrl: 'gdbp://MapGisLocal/ClientTheme/sfcls/湖北省市驻地'
    })
    .then((result) => {
      // 创建一个要素
      const feature = new Feature({
        // 设置要更新的要素id
        id: 0,
        // 设置几何，支持点、多点、线、多线、区、多区
        geometry: new MultiPoint({
          coordinates: [
            [109.47509, 30.270342],
            [111.27724, 30.706085]
          ]
        }),
        // 更新属性
        attributes: {
          "CODE": "0",
          "Name": "多点",
          "mpLayer": "0"
        },
        // 更新样式
        symbol: {
          "SymID": 43,
          "SymHeight": 3.200000047683716,
          "SymWidth": 3.200000047683716,
          "Angle": 0,
          "Color": 1467,
          "Color1": 4,
          "Color2": 3,
          "Space": 1,
          "OutPenW": [
            0.1,
            0.05,
            0.05
          ]
        }
      })

      // 创建更新要素的结构体
      const featureSet = {
       // 设置表结构，必填
        AttStruct: result.data.FieldAtt,
        // 设置要更新的要素，客串多个要素
        SFEleArray: [feature.toOldIGSFeature()]
      }

      // 更新要素
      featureServer.updateFeature({
        // 更新要素的结构体
        featureSet: featureSet,
        // 地图在文档下的序号，从0开始编号
        mapIndex: 0,
        // 图层序号，从0开始编号
        layerIndex: 2
      })
      .then((result) => {
        console.log('更新要素成功：', result);
      })
      .catch((result) => {
        console.log('更新要素失败：', result);
      })
    })
    .catch((result) => {
        console.log('查询GDBO失败：', result);
    })