/** * 加载WMS,拼接FILTER,LAYERS参数等 */ import { WFS_URL } from '../../conf/Constants' import { lrtrim } from '../../utils/utils' 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) => { if (typeof typeName === 'string' || typeName instanceof String) { const comma = typeName.indexOf(',') if (comma >= 0) { const typeNameArr = typeName.split(',') for (let i = 0; i < typeNameArr.length; i++) { this.addTypeName(lrtrim(typeNameArr[i])) } } } else if (Array.isArray(typeName)) { this.typeNames = typeName } } this.setFilter = (filter) => { console.log(filter) if (typeof filter === 'string' || filter instanceof String) { const eq = filter.indexOf('=') const lk = filter.indexOf('like') if (eq >= 0) { const filterArr = filter.split('=') this.addEquals(lrtrim(filterArr[0]), lrtrim(filterArr[1])) } if (lk >= 0) { const filterArr = filter.split('like') this.addLike(lrtrim(filterArr[0]), lrtrim(filterArr[1])) } } else if (Array.isArray(filter)) { this.filters = filter } } 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