/**
* 加载WMS,拼接FILTER,LAYERS参数等
*/
import { WFS_URL } from '../../conf/Constants'
function WfsHelper () {
this.filters = []
this.typeNames = []
this.url = WFS_URL
this.page = 1
this.pageSize = 10
this.params = {
REQUEST: 'getfeature',
OUTPUTFORMAT: 'application/json',
maxFeatures: 10,
version: '1.0.0'
}
this.setTypeName = (typeName) => {
this.typeNames = typeName
}
this.clearFilter = () => {
this.filters = []
}
this.addTypeName = (typeName) => {
this.typeNames.push(typeName)
}
this.addEquals = (property, equals) => {
// var filter = '' + property + '' + literal + ''
var filter = property + '=' + equals
this.filters.push(filter)
}
this.addLike = (property, literal) => {
// if (property && literal) {
// var filter = '' + property + '*' + literal + '*'
// this.filters.push(filter)
// }
var filter = property + ' like \'%' + literal + '%\''
this.filters.push(filter)
}
/**
* 得到filter参数值
* @returns {string|null}
*/
this.getFilterParams = () => {
/* var head = ''
var end = ''
var filter = ''
if (this.filters.length > 0) {
for (var i = 0; i < this.filters.length; i++) {
filter += this.filters[i]
}
// 当条件数 > 1时,需要用and标签包裹
if (this.filters.length > 1) {
return ('FILTER=' + head + '' + filter + '' + end)
}
return ('FILTER=' + head + filter + end)
} */
var filter = ''
if (this.filters.length > 0) {
filter = 'CQL_FILTER='
for (var i = 0; i < this.filters.length; i++) {
filter += this.filters[i]
if (i !== this.filters.length - 1) {
filter += ' AND '
}
}
return filter
}
return filter
}
this.getUrlParams = () => {
var params = ''
for (var p in this.params) {
params += (p + '=' + this.params[p] + '&')
}
// 拼接typename参数
params += 'typename=' + this.typeNames.join(',')
// 拼接filter参数
var filterParam = this.getFilterParams()
if (filterParam) {
params += '&' + filterParam
}
// return encodeURI(params)
return params
}
this.getUrl = () => {
var url = this.url
if (url.indexOf('?') > 0) {
url += '&'
} else {
url += '?'
}
return url + this.getUrlParams()
}
this.setPage = (page) => {
const startIndex = page * this.pageSize
this.params.startIndex = startIndex
this.page = page
}
this.setPageSize = (pageSize) => {
this.pageSize = pageSize
}
this.setMaxFeatures = (maxFeatures) => {
this.params.maxFeatures = maxFeatures
}
}
export default WfsHelper