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