import AjaxUtils from '../../utils/AjaxUtils'
|
import { WMS_URL } from '../../conf/Constants'
|
import { highlight, openPropsPopup } from './LocateHelper'
|
|
class MapManager {
|
constructor () {
|
this.hightlightLayer = window.L.featureGroup({}).addTo(window.map)
|
this.clickDialogSwitch = true // 图层点击弹窗开关
|
this.L = window.L
|
this.map = window.map
|
// wms getfeatureinfo 默认参数
|
this.defaultWmsParams = {
|
VERSION: '1.1.1',
|
SERVICE: 'WMS',
|
REQUEST: 'GetFeatureInfo',
|
// bbox: bbox,
|
FORMAT: 'image/png',
|
INFO_FORMAT: 'application/json',
|
TRANSPARENT: true,
|
FEATURE_COUNT: 50,
|
SRS: 'EPSG:4326',
|
EXCEPTIONS: 'application/vnd.ogc.se_inimage'
|
}
|
}
|
|
mapClickListener () {
|
this.map.on('click', (e) => {
|
// console.log(e)
|
this.clearHighlight()
|
this.loadWfsDatas(e.latlng).then((res) => {
|
if (res.features.length > 0) {
|
highlight(res.features[0])
|
if (this.clickDialogSwitch) {
|
openPropsPopup(e.latlng, res.features)
|
}
|
}
|
})
|
})
|
}
|
|
loadWfsDatas (latlng, params) {
|
return new Promise((resolve, reject) => {
|
const size = this.map.getSize()
|
var point = this.map.latLngToContainerPoint(latlng, this.map.getZoom())
|
const wmsLayerService = window.layerFactory.wmsLayerService
|
const layers = wmsLayerService.wmsLayerList.getLayers()
|
const filters = wmsLayerService.wmsLayerList.getFilters()
|
const wmsParams = Object.assign({
|
LAYERS: layers,
|
QUERY_LAYERS: layers,
|
WIDTH: size.x,
|
HEIGHT: size.y,
|
X: Math.round(point.x),
|
Y: Math.round(point.y),
|
BBOX: this.map.getBounds().toBBoxString()
|
}, this.defaultWmsParams, params)
|
if (filters) {
|
wmsParams.CQL_FILTER = filters
|
}
|
AjaxUtils.get4JsonDataByUrl(WMS_URL, wmsParams, (res) => {
|
resolve(res.data)
|
})
|
})
|
}
|
|
clearHighlight () {
|
this.hightlightLayer.clearLayers()
|
}
|
}
|
|
export default MapManager
|