    import BaseServer from '../../BaseServer'
    import { Zondy } from '../../../base'

    /**
     * ArcGIS的VectorTileServer服务
     * @class ArcGISVectorTileServer
     * @moduleEx ServiceModule
     * @extends BaseServer
     * @param {Object} options 构造参数
     * @param {String} [options.url = 无] 服务基地址
     */
    class ArcGISVectorTileServer extends BaseServer {
      constructor(options) {
        super(options)
      }

      /**
       * 查询资源信息
       * @param options 查询参数
       * @param {Function} [options.success] 查询成功回调函数，若使用Promise方式则不必填写
       * @param {Function} [options.failure] 查询失败回调函数，若使用Promise方式则不必填写
       */
      queryResourceInfo(options) {
        // 调用基类的查询信息方法
        return this._querySimpleInfo(options, function (url) {
          // 拼装返回基地址
          return `${url}/resources/info`
        })
      }

      /**
       * 获取样式列表
       * @param options 查询参数
       * @param {Function} [options.success] 查询成功回调函数，若使用Promise方式则不必填写
       * @param {Function} [options.failure] 查询失败回调函数，若使用Promise方式则不必填写
       */
      getStyleList(options) {
        // 调用基类的查询信息方法
        return this._querySimpleInfo(options, function (url) {
          // 拼装返回基地址
          return `${url}/resources/styles`
        })
      }

      /**
       * @description 获取指定样式
       * @param options 查询参数
       * @param {String} [options.styleId] 样式id，必填
       * @param {Function} [options.success] 查询成功回调函数，若使用Promise方式则不必填写
       * @param {Function} [options.failure] 查询失败回调函数，若使用Promise方式则不必填写
       */
      getStyle(options) {
        // 设置PATH PARAMETERS校验
        const checkPathOpts = {
          styleId: {
            type: 'String'
          }
        }

        // 设置QUERY PARAMETERS校验
        const checkQueryOpts = {}

        // 调用基类的查询信息方法
        return this._queryByParameters(
          options,
          checkPathOpts,
          checkQueryOpts,
          // 拼装返回基地址
          function (url, options) {
            return `${url}/resources/styles/${options.styleId}?f=json`
          }
        )
      }

      /**
       * @description 获取TileMap
       * @param options 查询参数
       * @param {Function} [options.success] 查询成功回调函数，若使用Promise方式则不必填写
       * @param {Function} [options.failure] 查询失败回调函数，若使用Promise方式则不必填写
       */
      getTileMap(options) {
        // 调用基类的查询信息方法
        return this._querySimpleInfo(options, function (url) {
          // 拼装返回基地址
          return `${url}/tilemap`
        })
      }
    }

    Zondy.Service.ArcGISVectorTileServer = ArcGISVectorTileServer
    export default ArcGISVectorTileServer