| | |
| | | /** |
| | | * 加载业务数据图层 |
| | | */ |
| | | |
| | | import styles from '../../../conf/Styles' |
| | | import { STYLES } from '../../../conf/Constants' |
| | | import AjaxUtils from '../../../utils/AjaxUtils' |
| | | |
| | | class WfsLayerService { |
| | |
| | | this.params = { |
| | | version: '1.0.0', |
| | | REQUEST: 'getfeature', |
| | | OUTPUTFORMAT: 'json', |
| | | maxFeatures: 20000 |
| | | OUTPUTFORMAT: 'json' |
| | | // maxFeatures: 20000 |
| | | } |
| | | this.popupComp = window.popupComp |
| | | this.L = window.L |
| | |
| | | } |
| | | |
| | | init (layer) { |
| | | this.layer = layer |
| | | const wfsUrl = this.config.wfs |
| | | if (wfsUrl) { |
| | | AjaxUtils.get4JsonDataByUrl(wfsUrl, this.params, (res) => this.draw(layer, res.data.features)) |
| | | this.loadData(wfsUrl) |
| | | } |
| | | } |
| | | |
| | | draw (layer, features) { |
| | | loadData (wfsUrl) { |
| | | AjaxUtils.get4JsonDataByUrl(wfsUrl, this.params, (res) => { |
| | | this.draw(res.data.features) |
| | | }) |
| | | } |
| | | |
| | | draw (features) { |
| | | const icon = this.config.icon |
| | | const geojson = this.L.geoJSON(features, { |
| | | const styles = this.config.styles |
| | | Object.assign(STYLES, styles) |
| | | const geojsonLayer = this.L.geoJSON(features, { |
| | | style: function (feature) { |
| | | return { |
| | | fill: styles.defaultLineStyle.fill, |
| | | weight: styles.defaultLineStyle.weight, |
| | | fillColor: styles.defaultLineStyle.fillColor, |
| | | color: styles.defaultLineStyle.color, |
| | | fillOpacity: styles.defaultLineStyle.fillOpacity, |
| | | opacity: styles.defaultLineStyle.opacity, |
| | | dashArray: styles.defaultLineStyle.dashArray, |
| | | dashSpeed: styles.defaultLineStyle.dashSpeed |
| | | fill: STYLES.FILL, |
| | | weight: STYLES.WEIGHT, |
| | | fillColor: STYLES.FILL_COLOR, |
| | | color: STYLES.COLOR, |
| | | fillOpacity: STYLES.FILL_OPACITY, |
| | | opacity: STYLES.OPACITY |
| | | // dashArray: STYLES.DASH_ARRAY, |
| | | // dashSpeed: STYLES.DASH_SPPED |
| | | } |
| | | }, |
| | | pointToLayer: (geoJsonPoint, latlng) => { |
| | |
| | | img: { |
| | | // url: 'assets/images/map/marker-icon.png', |
| | | url: '/assets/images/map/' + icon, |
| | | size: styles.defaultLineStyle.size |
| | | size: STYLES.ICON_SIZE |
| | | } |
| | | }) |
| | | }, |
| | |
| | | .bindTooltip((layer) => this.tooltipListener(layer), { direction: 'bottom', offset: [0, 15], sticky: true }) |
| | | .on('mouseover', (e) => this.mouseOverListener(e, layer)).on('mouseout', (e) => this.mouseOutListener(e, layer)) |
| | | } |
| | | }).addTo(layer) |
| | | return geojson |
| | | }).addTo(this.layer) |
| | | window.layerFactory.setZIndex(geojsonLayer) |
| | | } |
| | | |
| | | mouseOverListener (e, layer) { |
| | |
| | | const icon = this.config.icon |
| | | const type = e.target.feature.geometry.type |
| | | if (type === 'LineString' || type === 'MultiLineString') { |
| | | layer.setStyle({ weight: styles.defaultLineStyle.weight, color: styles.defaultLineStyle.color }) |
| | | layer.setStyle({ weight: STYLES.WEIGHT, color: STYLES.COLOR }) |
| | | } |
| | | if (type === 'Point' || type === 'MultiPoint') { |
| | | layer.setStyle({ |
| | | img: { |
| | | url: '/assets/images/map/' + icon, |
| | | size: styles.defaultLineStyle.size |
| | | size: STYLES.ICON_SIZE |
| | | } |
| | | }) |
| | | } |