/**
|
* 加载WMS,拼接FILTER,LAYERS参数等
|
*/
|
import MapConfig from '../../conf/MapConfig'
|
function WfsHelper () {
|
this.filters = []
|
this.typeNames = []
|
this.url = MapConfig.BLUEMAP_HOST + '/server/ogcserver/PipeLine/wfs'
|
this.params = {
|
REQUEST: 'getfeature',
|
OUTPUTFORMAT: 'JSON',
|
maxFeatures: 20000,
|
version: '1.0.0'
|
}
|
|
this.addTypeName = (typeName) => {
|
this.typeNames.push(typeName)
|
}
|
|
this.addEquals = (property, literal) => {
|
var filter = '<PropertyIsEqualTo><PropertyName>' + property + '</PropertyName><Literal>' + literal + '</Literal></PropertyIsEqualTo>'
|
this.filters.push(filter)
|
}
|
|
this.addLike = (property, literal) => {
|
var filter = '<PropertyIsLike><PropertyName>' + property + '</PropertyName><Literal>*' + literal + '*</Literal></PropertyIsLike>'
|
this.filters.push(filter)
|
}
|
|
/**
|
* 得到filter参数值
|
* @returns {string|null}
|
*/
|
this.getFilterParams = () => {
|
var head = '<Filter xmlns="http://www.opengis.net/ogc">'
|
var end = '</Filter>'
|
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 + '<And>' + filter + '</And>' + end)
|
}
|
return ('FILTER=' + head + filter + end)
|
}
|
return null
|
}
|
|
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)
|
}
|
|
this.getUrl = () => {
|
var url = this.url
|
if (url.indexOf('?') > 0) {
|
url += '&'
|
} else {
|
url += '?'
|
}
|
return url + this.getUrlParams()
|
}
|
}
|
|
export default WfsHelper
|