类名 common/service/igs/VectorTileServer.js
import BaseServer from '../BaseServer'
import { Zondy } from '../../base'
import { defaultValue } from '../../util'

/**
 * 矢量瓦片服务
 * @class VectorTileServer
 * @moduleEx ServiceModule
 * @extends BaseServer
 * @param {Object} options 构造参数
 * @param {String} [options.url] 服务基地址
 * @example
 * // ES5引入方式
 * const { VectorTileServer } = Zondy.Service
 * // ES6引入方式
 * import { VectorTileServer } from "@mapgis/webclient-common"
 * const vectorTileServer = new VectorTileServer({
 *   url: 'http://localhost:8089/igs/rest/services/中国行政区/VectorTileServer',
 *   requestInterceptor: {
 *     before: function (config) {
 *       return config;
 *     },
 *     failure: function (error) {
 *       console.log("请求发送失败(拦截器):", error)
 *     }
 *   },
 *   responseInterceptor: {
 *     success: function (result) {
 *       console.log("请求成功拦截响应")
 *       return result;
 *     },
 *     failure: function (result) {
 *       console.log("请求失败拦截响应")
 *       return result;
 *     }
 *   }
 * });
 */
class VectorTileServer extends BaseServer {
  constructor(options) {
    super(options)
  }

  /**
   * 获取矢量瓦片字体
   * @param options 查询参数
   * @param {Function} [options.success] 查询成功回调函数,若使用Promise方式则不必填写
   * @param {Function} [options.failure] 查询失败回调函数,若使用Promise方式则不必填写
   * @example
   * // 回调方式
   * vectorTileServer.queryServerInfo({
   *   success: function (result) {
   *     console.log('请求成功:', result);
   *   },
   *   failure: function (result) {
   *     console.log('请求失败:', result);
   *   }
   * });
   * // promise方式
   * vectorTileServer.queryServerInfo().then(function (result) {
   *   console.log('请求成功:', result);
   * }).catch(function (result) {
   *   console.log('请求失败:', result);
   * })
   */
  getFonts(options) {
    // 调用基类的查询信息方法
    return this._querySimpleInfo(options, function (url) {
      // igs1.0 请求数据逻辑
      if (url && url.indexOf('igs/rest/mrms/tile') > -1) {
        url = url.replace('mrms/tile', 'mrcs/vtiles')
        return `${url}/fonts`
      }
      // 拼装返回基地址
      return `${url}/fonts?f=json`
    })
  }

  /**
   * 获取矢量瓦片sprite图
   * @param options 查询参数
   * @param {Function} [options.success] 查询成功回调函数,若使用Promise方式则不必填写
   * @param {Function} [options.failure] 查询失败回调函数,若使用Promise方式则不必填写
   * @param {String} [options.format] sprite图格式,支持后缀为.json或.png
   * @example
   * // 回调方式
   * vectorTileServer.getSprite({
   *   success: function (result) {
   *     console.log('请求成功:', result);
   *   },
   *   failure: function (result) {
   *     console.log('请求失败:', result);
   *   }
   * });
   * // promise方式
   * vectorTileServer.getSprite().then(function (result) {
   *   console.log('请求成功:', result);
   * }).catch(function (result) {
   *   console.log('请求失败:', result);
   * })
   */
  getSprite(options) {
    // 调用基类的查询信息方法
    return this._querySimpleInfo(options, function (url) {
      // igs1.0 请求数据逻辑
      if (url && url.indexOf('igs/rest/mrms/tile') > -1) {
        url = url.replace('mrms/tile', 'mrcs/vtiles')
        return `${url}/sprite${defaultValue(options.param, '.json')}`
      }
      // 拼装返回基地址
      return `${url}/sprites/sprite${defaultValue(options.param, '.json')}`
    })
  }

  /**
   * 获取矢量瓦片样式
   * @param options 查询参数
   * @param {Function} [options.success] 查询成功回调函数,若使用Promise方式则不必填写
   * @param {Function} [options.failure] 查询失败回调函数,若使用Promise方式则不必填写
   * @example
   * // 回调方式
   * vectorTileServer.getStyle({
   *   success: function (result) {
   *     console.log('请求成功:', result);
   *   },
   *   failure: function (result) {
   *     console.log('请求失败:', result);
   *   }
   * });
   * // promise方式
   * vectorTileServer.getStyle().then(function (result) {
   *   console.log('请求成功:', result);
   * }).catch(function (result) {
   *   console.log('请求失败:', result);
   * })
   */
  getStyle(options) {
    // 调用基类的查询信息方法
    return this._querySimpleInfo(options, function (url) {
      // igs1.0 请求数据逻辑
      if (url && url.indexOf('igs/rest/mrms/tile') > -1) {
        return url.replace('mrms/tile', 'mrcs/vtiles/0')
      }
      // 拼装返回基地址
      return `${url}/style?f=json`
    })
  }
}

Zondy.Service.VectorTileServer = VectorTileServer
export default VectorTileServer
构造函数
成员变量
方法
事件