    import { Zondy } from '../../common/Base';
    import { DataStoreService } from '../ServiceBase';

    /**
     * @author 创新中心-潘卓然
     * @class module:PostGIS.PostgisVectorTileService
     * @param {PostgisQueryParameter} option 查询条件
     * @param {String} [option.path] {数据库名}/{工作空间名}/{表名}
     * @param {String} [option.version] 版本号
     * @param {Number} [option.tileMatrix] 图层放大缩小等级
     * @param {Number} [option.tileRow] 瓦片行号
     * @param {Number} [option.tileCol] 瓦片列号
     */
    export class PostgisVectorTileService extends DataStoreService {
        constructor(option) {
            super(option);

            /**
             * @member module:PostGIS.PostgisVectorTileService.prototype.serviceUrl
             * @description 服务地址
             */
            this.serviceUrl = '/datastore/rest/dataset/pg/vectortile/';
            /**
             * @member module:PostGIS.PostgisVectorTileService.prototype.path
             * @description 库名称
             */
            this.path = option.path;
            /**
             * @member module:PostGIS.PostgisVectorTileService.prototype.version
             * @description 版本号
             */
            this.version = option.version;
            /**
             * @member module:PostGIS.PostgisVectorTileService.prototype.tileMatrix
             * @description 图层放大缩小等级
             */
            this.tileMatrix = option.tileMatrix;
            /**
             * @member module:PostGIS.PostgisVectorTileService.prototype.tileRow
             * @description 瓦片行号
             */
            this.tileRow = option.tileRow;
            /**
             * @member module:PostGIS.PostgisVectorTileService.prototype.tileCol
             * @description 瓦片列号
             */
            this.tileCol = option.tileCol;

            this.fixOption(option);
        }

        /**
         * @private 修正get/post需要的真正参数
         */
        fixOption(option) {
            this.option = {
                version: option.version,
                tileMatrix: option.tileMatrix,
                tileRow: option.tileRow,
                tileCol: option.tileCol
            };
        }

        /**
         * @function module:PostGIS.PostgisVectorTileService.prototype.getWmtsUrl
         * @description 获取实时矢量瓦片的WMTS的实时WMTS接口
         */
        getWmtsUrl() {
            let { serviceUrl, path, option } = this;
            serviceUrl += path;
            let url = this.getFullUrl(serviceUrl, option);
            url = decodeURI(url);
            return url;
        }

        /**
         * @description 查询函数，向服务器发送请求,返回地名地址格式数据
         * @function module:PostGIS.PostgisVectorTileService.prototype.query
         * @param  {Function} onSuccess 查询成功回调函数。
         * @param {Function} onError 查询失败回调函数。
         */
        query(onSuccess, onError) {
            let { serviceUrl, path, option } = this;
            serviceUrl += path;
            let url = this.getFullUrl(serviceUrl, option);
            this.get(url, onSuccess, onError);
        }
    }

    export default PostgisVectorTileService;
    Zondy.DataStore.PostGIS.PostgisVectorTileService = PostgisVectorTileService;