#### # new MapServer(options)

地图服务

#### 参数

名称 | 类型 | 描述
--- | --- | ---
`options` | Object | 构造参数

##### 示例

    //初始化MapServer服务对象
    // ES5引入方式
    const { MapServer } = zondy.service
    // ES6引入方式
    import { MapServer } from "@mapgis/webclient-common"
    const mapServer = new MapServer({
      //从igs详情里面获取的服务地址
      url: 'http://localhost:8089/igs/rest/services/动态裁图/MapServer'
    });

### 继承关系

- BaseServer

### 成员变量

#### 成员变量概述

名称 | 类型 | 描述
--- | --- | ---
`clientId` | `Boolean` | `客户端id`
`enableGlobeFetch` | `Boolean` | `是否使用确据唯一的fetch对象，默认为true，当设为false时，会使用自己私有的fetch对象，所有的请求设置不会影响全局`
`headers` | `String` | `请求头参数`
`requestInterceptor` | `function` | `请求发送拦截器`
`requestTimeout` | `String` | `请求超时时间，默认45000ms，即45s`
`responseInterceptor` | `function` | `请求响应拦截器`
`tokenAttachType` | `TokenAttachType` | `指定token附加到何处`
`tokenKey` | `String` | `token名`
`tokenValue` | `String` | `token值`
`url` | `String` | `服务基地址`

#### 成员变量详情

类型: Boolean

#### # clientId

客户端id

Inherited From:
  - BaseServer#clientId

类型: Boolean

#### # enableGlobeFetch

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

Inherited From:
  - BaseServer#enableGlobeFetch

##### 示例

    //设置请求基地址
    // 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

##### 示例

    //设置请求头参数
    // 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

##### 示例

    //设置拦截器，任何一个继承自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

##### 示例

    //设置超时时间
    //初始化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

##### 示例

    //设置拦截器，任何一个继承自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

##### 示例

    //设置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

##### 示例

    //设置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

##### 示例

    //设置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

##### 示例

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

### 方法

#### 方法概述

名称 | 返回值类型 | 描述
--- | --- | ---
`addLayer` | `` | `添加临时文档图层`
`deleteLayer` | `` | `删除临时文档图层`
`exportImage` | `` | `根据参数出图，详细说明请参考IGS的API文档`
`getImage` | `` | `根据参数获取图片的url`
`getLegend` | `` | `获取图例`
`queryFeatures` | `` | `指定图层的要素查询`
`queryFeaturesInLayers` | `` | `多图层的要素查询`
`queryLayerInfo` | `` | `查询指定图层信息`
`queryLayerList` | `` | `获取图层列表信息`
`queryServerInfo` | `` | `获取服务信息，IGS2.0新增服务`
`setSystemLib` | `` | `设置图层的系统库`

#### 方法详情

#### # addLayer(options)

添加临时文档图层

#### 参数

名称 | 类型 | 描述
--- | --- | ---
`options` | Object | 构造参数
`addInfo` | Array | 图层添加信息，必填
`success` | function | 请求成功时的回调
`failure` | queryFailure | 请求失败时的回调
`clientId` | String | 客户端Id

#### # deleteLayer(options)

删除临时文档图层

#### 参数

名称 | 类型 | 描述
--- | --- | ---
`options` | Object | 构造参数
`layerId` | String | 图层id，必传
`success` | function | 请求成功时的回调
`failure` | function | 请求失败时的回调
`clientId` | String | 客户端Id

#### # exportImage(options)

根据参数出图，详细说明请参考IGS的API文档

#### 参数

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` |  |  |
`method` | FetchMethod | FetchMethod.post | 请求方式
`bbox` | String |  | 出图范围，格式：xmin,ymin,xmax,ymax，如果设置了projectionSrs参数，确保bbox是projectionSrs参照系的范围
`layers` | String |  | 图层状态，格式：show|hide|include|exclude:layerid1,layerid2
`size` | String |  | 图片大小，格式：width,height，默认512,512
`transparent` | String |  | 返回的图片是否透明，支持true/false, 默认true
`format` | String |  | 返回图片格式，支持png/jpg/gif，默认png
`projectionSrs` | String |  | 投影空间参照系，支持MapGIS参照系名称、EPSG格式参考系、WKT格式参考系
`isAntialiasing` | String |  | 返回的图片是否抗锯齿，支持true/false, 默认false
`layerStyles` | String |  | 样式信息，格式参照 Map<String,MapLayerDisplayStyleDto>，key为layerId，支持图层复合索引
`layerFilters` | String |  | 过滤信息，格式参照Map<String,MapLayerFilterDto>，key为layerId，支持图层复合索引
`dynamicLayers` | String |  | 动态图层出图参数
`clipping` | String |  | 空间裁剪参数
`f` | String |  | 返回格式
`clientId` | String |  | 客户端Id

#### # getImage(options)

根据参数获取图片的url

#### 参数

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` |  |  |
`extent` | Extent |  | 图片范围
`width` | Number | 256 | 图片宽度，单位像素
`height` | Number | 256 | 图片高度，单位像素

返回值

String 图片的url

#### # getLegend(options)

获取图例

#### 参数

名称 | 类型 | 描述
--- | --- | ---
`options` | Object | 构造参数
`success` | getLegendSuccess | 请求成功时的回调
`failure` | queryFailure | 请求失败时的回调
`layers` | String | 图层索引列表，多个用英文逗号隔开
`size` | String | 图例图片的大小，格式：width,height
`where` | String | 属性条件,类SQL语句
`bbox` | Extent | 矩形范围过滤条件
`page` | Number | 图例结果分页页数
`pageSize` | Number | 图例结果分页大小
`maxQueryFeatureCount` | Number | 查询要素的最大条数

##### 示例

    //回调方式
    mapServer.getLegend({
      layers: "0",
      size: '45,45',
      success: function (result) {
        console.log('请求成功：', result);
      },
      failure: function (result) {
        console.log('请求失败：', result);
      }
    });
    //promise方式
    mapServer.getLegend({
      layers: "1"
    }).then(function (result) {
      console.log('请求成功：', result);
    }).catch(function (result) {
      console.log('请求失败：', result);
    });

#### # queryFeatures(options)

指定图层的要素查询

#### 参数

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` | Object |  | 构造参数
`layerId` | String |  | 图层id，必传
`success` | queryFeaturesSuccess |  | 请求成功时的回调
`failure` | queryFailure |  | 请求失败时的回调
`method` | FetchMethod | FetchMethod.get | 请求方式，包括FetchMethod.get，FetchMethod.post
`where` | String |  | 要素查询where条件，类似sql语句
`geometry` | Geometry |  | 要素查询几何条件
`distance` | Number | 0 | 几何缓冲的距离，geometry为point、line时有效（若数据源为大数据PG数据，且geometryType为line或者point时为必填数据）
`geometryPrecision` | Number |  | 指定返回要素中几何坐标的小数点位数，例如2，则返回两位小数
`spatialRel` | SpatialRelation |  | 几何条件的空间判定规则，Intersects(相交)、EnvelopeIntersects(外包矩形相交)、Contains(包含)、Disjoint(相离)
`outFields` | String |  | 指定要输出的属性字段，可为*表示所有，多个用英文逗号分隔
`objectIds` | String |  | 过滤id，多个用英文逗号分隔(参数优先级很高，可能导致其它筛选条件失效)
`orderByFields` | String |  | 排序字段,格式: fieldName [ASC|DESC]
`groupByFieldsForStatistics` | String |  | 分组统计的字段信息,格式为field1,field2
`resultRecordCount` | Number | 20 | 分页参数：结果返回条数，默认20
`resultOffset` | Number |  | 分页参数：跳过条数，例如resultOffset为4，则跳过前4条，从第5条开始返回resultRecordCount的数量
`outStatistics` | Array.<OutStatistic> |  | 字段统计参数数组
`returnGeometry` | Boolean | true | 是否返回要素几何信息，默认为true
`returnAttribute` | Boolean | true | 是否返回要素属性，默认为true
`returnStyle` | Boolean | false | 是否返回要素样式，默认为false
`returnIdsOnly` | Boolean | false | 是否只返回要素id，默认为false
`returnCountOnly` | Boolean | false | 是否只返回要素条数，默认为false
`returnExtentOnly` | Boolean | false | 是否只返回范围，默认为false
`returnZ` | Boolean | false | 是否返回Z轴，默认为false

##### 示例

    //通过where语句进行查询
    //回调方式
    // ES5引入方式
    const { Point } = zondy.geometry
     // ES6引入方式
    import { Point } from "@mapgis/webclient-common"
    mapServer.queryFeatures({
      //图层id
      layerId: '1',
      //where查询条件，类似sql语句，这里查询2011年GDP大于20的城市
    	 where: "GDP2011>20",
    	 //以GDP2011字段进行升序排序
      orderByFields: "GDP2011 ASC",
    	 //指定输出的属性字段为NAME,GDP2011
    	 outFields: "NAME,GDP2011",
    	 //指定返回要素中几何坐标的小数点位数为2
    	 geometryPrecision: 2,
    	 //成功返回结果
    	 success: function(result) {
    		 console.log('请求成功：',result);
    	 },
    	 failure: function(result) {
    		 console.log('请求失败：',result);
    	 }
    });
    //promise方式
    //通过geometry语句进行查询
    let point = new Point({
    	coordinates: [113.8178, 30.172834]
    });
    mapServer.queryFeatures({
      //图层id
      layerId: 1,
      //几何条件
      geometry: point,
      //设置缓冲距离，仅当几何类型为point、line时有效
      distance: 100
    }).then(function (result) {
      console.log('请求成功：', result);
    }).catch(function (result) {
      console.log(' n请求失败：', result);
    });

#### # queryFeaturesInLayers(options)

多图层的要素查询

#### 参数

名称 | 类型 | 默认值 | 描述
--- | --- | --- | ---
`options` |  |  | 要素查询参数
`success` | queryFeaturesInLayersSuccess |  | 查询成功回调函数，若使用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

##### 示例

    //回调方式
    // ES5引入方式
    const { Extent } = zondy.geometry
    const { FetchMethod } = zondy.enum
    // ES6引入方式
    import { Extent,FetchMethod } from "@mapgis/webclient-common"
    mapServer.queryFeaturesInLayers({
      geometry: new Extent({
        xmin: 110.66,
        ymin: 29.61,
        xmax: 114.05,
        ymax: 32.43
      }),
      method: FetchMethod.post,
      success: function (result) {
        console.log('请求成功：', result);
      },
      failure: function (result) {
        console.log('请求击败：', result);
      }
    });
    //promise方式
    mapServer.queryFeaturesInLayers({
      layerDefs: [{
        layerId: "0",
        outfields: "mpLayer,mpPerimeter"
      },{
        layerId: "1",
        where: "mpLayer=1",
        outfields: "mpLayer"
      }]
    }).then(function (result) {
      console.log('请求成功：', result);
    }).catch(function (result) {
      console.log(' n请求失败：', result);
    });

#### # queryLayerInfo(options)

查询指定图层信息

#### 参数

名称 | 类型 | 描述
--- | --- | ---
`options` | Object | 构造参数
`layerId` | String | 图层id，必填
`success` | queryLayerInfoSuccess | 请求成功时的回调
`failure` | queryFailure | 请求失败时的回调
`clientId` | String | 客户端Id
`mapIndex` | String | 地图索引，igs1.0参数
`returnFullStyle` | Boolean | 是否返回全部信息的标志位
`guid` | String | 用户会话id

##### 示例

    //查询指定图层信息
    //回调方式
    mapServer.queryLayerInfo({
     //图层id
    	layerId: 0,
    	//成功回调
    	success: function(result) {
    		console.log('请求成功：',result);
    	},
     failure: function (result) {
       console.log('请求失败：', result);
     }
    });
    //promise方式
    mapServer.queryLayerInfo({
      //图层id
      layerId: '0'
    }).then(function (result) {
      console.log('请求成功：', result);
    }).catch(function (result) {
      console.log(' n请求失败：', result);
    });

#### # queryLayerList(options)

获取图层列表信息

#### 参数

名称 | 类型 | 描述
--- | --- | ---
`options` | Object | 构造参数
`success` | queryLayerListSuccess | 请求成功时的回调
`failure` | queryFailure | 请求失败时的回调
`clientId` | String | 临时图层ID
`mapIndex` | String | 地图索引，IGS1.0参数
`guid` | String | 用户会话id，IGS1.0参数

##### 示例

    //获取图层列表信息
    //回调方式
    mapServer.queryLayerList({
    	success: function(result) {
    		console.log('请求成功：',result);
    	},
    	failure: function(result) {
    	  console.log('请求失败：',result);
    	}
    });
    //promise方式
    mapServer.queryLayerList({
    }).then(function (result) {
      console.log('请求成功：', result);
    }).catch(function (result) {
      console.log(' n请求失败：', result);
    });

#### # queryServerInfo(options)

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

#### 参数

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

Inherited From:
  - BaseServer#queryServerInfo

##### 示例

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

    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);
    });

#### # setSystemLib(options)

设置图层的系统库

#### 参数

名称 | 类型 | 描述
--- | --- | ---
`options` | Object | 构造参数
`layerId` | String | 图层id，必填
`systemLibId` | String | 系统库id，必填
`systemLibName` | String | 系统库名，当systemLibId为空时有效，必填
`success` | function | 请求成功时的回调
`failure` | function | 请求失败时的回调