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

    /**
     * 兴趣点服务,服务地址：/igs/rest/services/{folder}/{serviceName}/PoiServer
     * @class PoiServer
     * @moduleEx ServerModule
     * @extends BaseServer
     * @param {Object} options 构造参数
     * @param {String} [options.url = 无] 服务基地址
     * @example
     * //初始化PoiServer服务对象
     * // ES5引入方式
     * const { PoiServer } = Zondy.Service
     * // ES6引入方式
     * import { PoiServer } from "@mapgis/webclient-common"
     *     const poiServer = new PoiServer({
     *       //服务基地址
     *       url: 'http://192.168.82.89:8089/igs/rest/services/兴趣点/PoiServer'
     *     })
     */
    class PoiServer extends BaseServer {
      constructor(options) {
        super(options)
      }

      /**
       * @function PoiServer.prototype.queryPoi
       * @description 兴趣点查询,后端接口:/igs/rest/services/{serviceName}/PoiServer/search
       * @param options 查询参数
       * @param {Function} [options.success = 无] 查询成功回调函数，若使用Promise方式则不必填写
       * @param {Function} [options.failure = 无] 查询失败回调函数，若使用Promise方式则不必填写，若使用Promise方式则不必填写
       * @param {String} [options.keywords = 无] 查询关键字，keywords和type/typeCode两者至少必选其一)
       * @param {String} [options.typeCode = 无] poi分类代码，与type二选一
       * @param {String} [options.type = 无] poi分类汉字，与typeCode二选一
       * @param {Geometry} [options.geometry = 无] 几何过滤信息
       * @param {String} [options.city = 无] 查询城市，城市中文全拼，如：北京市，与cityCode、adCode三选一，填入此参数后，会尽量优先返回此城市数据，但是不一定仅局限此城市结果，若仅需要某个城市数据请调用cityLimit参数
       * @param {String} [options.cityCode = 无] 查询城市，cityCode，如：010
       * @param {String} [options.adCode = 无] 查询城市，adCode，如：110000
       * @param {Boolean} [options.cityLimit = false] 是否仅返回指定城市数据
       * @param {Number} [options.page = 1] 分页参数，页码，默认1
       * @param {Number} [options.pageSize = 25] 分页参数，每页大小，默认25
       * @returns {Promise<Object>}
       * @example
       * //回调方式
       * poiServer.queryPoi({
       *         keywords:'武汉',
       *         cityCode:'010',
       *         addCode:'110000',
       *         success: function (result) {
       *           console.log('请求成功：', result)
       *         }
       *       })
       * //promise方式
       * poiServer.queryPoi({
       *         keywords:'武汉',
       *         cityCode:'010',
       *         addCode:'110000',
       * }).then(function (result) {
       *   console.log('请求成功：', result);
       * }).catch(function (result) {
       *   console.log('请求失败：', result);
       * });
       */
      queryPoi(options) {
        // 设置PATH PARAMETERS校验
        const checkPathOpts = {}

        // 设置QUERY PARAMETERS校验
        const checkQueryOpts = {
          keywords: {
            type: 'String'
          },
          typeCode: {
            type: 'String'
          },
          type: {
            type: 'String'
          },
          geometry: {
            type: 'Geometry'
          },
          city: {
            type: 'String'
          },
          cityCode: {
            type: 'String'
          },
          adCode: {
            type: 'String'
          },
          cityLimit: {
            type: 'Boolean'
          },
          page: {
            type: 'Number'
          },
          pageSize: {
            type: 'Number'
          }
        }

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

    Zondy.Service.PoiServer = PoiServer
    export default PoiServer