From 56b43d0a37ec52b718b32b00c63eb88f2e2744f3 Mon Sep 17 00:00:00 2001
From: YANGDL <114714267@qq.com>
Date: 星期五, 26 二月 2021 09:07:56 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
src/main.js | 1
src/components/LayerController/modules/LcServiceLayerFilter.vue | 10 ++-
src/conf/MapConfig.js | 3
package.json | 2
src/conf/LayerSewers.js | 4 +
src/components/helpers/ServiceLayerHelper.js | 104 ++++++++++++++++------------------
src/components/LayerController/modules/LcServiceLayer.vue | 12 +++-
src/Sgis.js | 2
src/store/modules/map.js | 12 +++-
9 files changed, 83 insertions(+), 67 deletions(-)
diff --git a/package.json b/package.json
index a9d5e32..ba42def 100644
--- a/package.json
+++ b/package.json
@@ -21,7 +21,7 @@
"jquery": "^3.5.1",
"js-cookie": "^2.2.0",
"leaflet": "^1.6.0",
- "leaflet-canvas-marker": "^0.2.0",
+ "leaflet-canvas-markers": "^1.0.6",
"leaflet.markercluster": "^1.4.1",
"lodash": "^4.17.10",
"nprogress": "^0.2.0",
diff --git a/src/Sgis.js b/src/Sgis.js
index 264422a..6ae1b0a 100644
--- a/src/Sgis.js
+++ b/src/Sgis.js
@@ -4,7 +4,6 @@
import Editable from '@components/plugin/Editable'
import PathDrag from '@components/plugin/PathDrag'
-import CanvasIcon from '@components/plugin/CanvasMarkers'
import MagicMarker from '@components/plugin/MagicMarker'
import WmtsSupport from '@components/plugin/wmts_plugins'
@@ -21,7 +20,6 @@
Editable.init(L) // 鍥惧眰缂栬緫
PathDrag.init(L) // 璺緞鎷栨嫿
MagicMarker.init(L) // 鍔ㄧ敾Marker
- CanvasIcon.init(L) // 浣跨敤canvas缁樺埗Marker
WmtsSupport.init(L) // 鎵╁睍锛屼娇鏀寔WMTS
// CustomPopup.init(L) // 鑷畾涔夊脊鍑烘
DashFlow.DashFlow(L) // 娴佸姩绾垮浘
diff --git a/src/components/LayerController/modules/LcServiceLayer.vue b/src/components/LayerController/modules/LcServiceLayer.vue
index 09ec4c4..9833b42 100644
--- a/src/components/LayerController/modules/LcServiceLayer.vue
+++ b/src/components/LayerController/modules/LcServiceLayer.vue
@@ -11,7 +11,8 @@
:name="'wmsSublayers_'+item.code+'_'+itm.code"
:checked="itm.checked"
:value="itm.code"
- @change="swWmsLayer(itm)"/>{{ itm.name }}
+ @change="swWmsLayer(item.url,itm)"/>{{
+ itm.name }}
</div>
</div>
</div>
@@ -56,9 +57,14 @@
window.L.geoJSON(res).addTo(window.map)
})
},
- swWmsLayer (itm) {
+ swWmsLayer (url, itm) {
itm.checked = !itm.checked
- this.updateWms()
+ if (itm.checked) {
+ window.serviceLayerHelper.loadGeojsonLayer(url, itm)
+ } else {
+ window.serviceLayerHelper.removeLayer(itm)
+ }
+ // this.updateWms()
},
swFilter (item) {
this.layerFilterVisible = !this.layerFilterVisible
diff --git a/src/components/LayerController/modules/LcServiceLayerFilter.vue b/src/components/LayerController/modules/LcServiceLayerFilter.vue
index d9bad44..c4a6cef 100644
--- a/src/components/LayerController/modules/LcServiceLayerFilter.vue
+++ b/src/components/LayerController/modules/LcServiceLayerFilter.vue
@@ -7,7 +7,7 @@
</div>
<div class="content">
<div v-for="filter in item.filters" :key="filter.code">
- <input type="checkbox" :value="filter.code" :checked="filter.checked" @change="swSubFilter(filter)"><label
+ <input type="checkbox" :value="filter.code" :checked="filter.checked" @change="swSubFilter(item.url,filter)"><label
:title="filter.name">{{filter.name}}</label>
</div>
</div>
@@ -58,9 +58,13 @@
console.log(item)
// window.serviceLayerHelper.loadLayers()
},
- swSubFilter (item) {
+ swSubFilter (url, item) {
item.checked = !item.checked
- console.log(item)
+ if (item.checked) {
+ window.serviceLayerHelper.loadGeojsonLayer(url, item)
+ } else {
+ window.serviceLayerHelper.removeLayer(item)
+ }
// window.serviceLayerHelper.loadLayers()
}
}
diff --git a/src/components/helpers/ServiceLayerHelper.js b/src/components/helpers/ServiceLayerHelper.js
index 81069b5..bf9883e 100644
--- a/src/components/helpers/ServiceLayerHelper.js
+++ b/src/components/helpers/ServiceLayerHelper.js
@@ -3,7 +3,7 @@
* 鍒涘缓鍥惧眰鐩稿叧鐨勭被
*/
import AjaxUtils from '@/utils/AjaxUtils'
-import { GEOM_TYPE } from '../../conf/Constants'
+import store from '@/store'
class ServiceLayerHelper {
constructor (options) {
@@ -14,7 +14,7 @@
this.tileLayersWMTSArray = [] // 鍒濆鐨刉MTS闆�
this.tileLayersTileArray = [] // 鍒濆鐨凾ile闆�
this.tileLayersWMSArray = [] // 鍒濆鐨刉MS闆�
- this.geojsonArray = [] // 鍒濆鐨刧eojson闆�
+ this.geojsonArray = {} // 鍒濆鐨刧eojson闆�
this.layerConfig = {}
this.regex = /\{(.+?)\}/g // 鍖归厤{}
}
@@ -51,73 +51,49 @@
this.loadTileLayer(opt, isAddToMap)
this.tileLayersTileArray.push(opt)
} else if (opt.type === 'geojson') {
- this.loadGeojson(opt)
+ this.loadGeojsonLayers(opt)
}
}
}
}
- loadGeojson (options) {
+ loadGeojsonLayers (options) {
var url = options.url
var layers = options.layers
- var matches = this.regex.exec(url)
for (var i = 0; i < layers.length; i++) {
var layer = layers[i]
- var matchValue = layer[matches[1]]
var checked = layer.checked
- var geomtype = layer.geomtype
- if (!checked) {
- continue
+ if (checked) {
+ this.loadGeojsonLayer(url, layer)
}
- var newUrl = url.replace(this.regex, matchValue)
- var that = this
+ }
+ }
+
+ loadGeojsonLayer (url, layer) {
+ var matches = this.regex.exec(url)
+ var matchValue = layer[matches[1]]
+ var code = layer.code
+ var newUrl = url.replace(this.regex, matchValue)
+ var that = this
+ if (!that.geojsonArray[code]) {
AjaxUtils.GetDataAsynByUrl(newUrl, {}, function (res) {
- switch (geomtype) {
- case GEOM_TYPE.POINT :
- that.loadPointGeojson(res)
- break
- case GEOM_TYPE.LINE :
- that.loadLineGeojson(res)
- break
- case GEOM_TYPE.POLYGON :
- break
- default:
- that.loadLineGeojson(res)
- break
- }
+ store.commit('setSewersDatas', res)
+ var layer = that.loadGeojson(res)
+ that.geojsonArray[code] = layer
})
}
}
/**
- * 鍔犺浇鐐规暟鎹�
- * @param res
- */
- loadPointGeojson (res) {
- this.L.geoJSON(res.features, {
- pointToLayer: function (geoJsonPoint, latlng) {
- return this.L.canvasMarker(latlng,
- {
- radius: 20,
- prevLatlng: this.L.latLng(51.503, -0.09), // previous point
- img: {
- url: './images/beng.png',
- size: [20, 20],
- rotate: 90
- }
- })
- }
- }).bindPopup(function (layer) {
- // return layer.feature.properties.linenumber
- }).addTo(this.map)
- }
-
- /**
- * 鍔犺浇绾挎暟鎹�
- * @param res
- */
- loadLineGeojson (res) {
- this.L.geoJSON(res.features, {
+ * 鍔犺浇鐐规暟鎹�
+ * @param res
+ */
+ loadGeojson (res) {
+ var that = this
+ const featureGroup = that.L.featureGroup([], {
+ attribution: { id: '123' }
+ }).addTo(that.map)
+ that.L.geoJSON(res.features, {
style: function (feature) {
return {
fill: true,
@@ -131,10 +107,30 @@
// dashSpeed: -10
}
},
- minZoom: 10
+ pointToLayer: function (geoJsonPoint, latlng) {
+ return that.L.canvasMarker(latlng,
+ {
+ radius: 20,
+ img: {
+ url: 'assets/images/map/marker-icon.png',
+ size: [20, 20]
+ }
+ })
+ }
}).bindPopup(function (layer) {
// return layer.feature.properties.linenumber
- }).addTo(this.map)
+ }).addTo(featureGroup)
+ featureGroup.bringToBack()
+ return featureGroup
+ }
+
+ removeLayer (item) {
+ var code = item.code
+ var layer = this.geojsonArray[code]
+ if (layer) {
+ this.map.removeLayer(layer)
+ delete this.geojsonArray[code]
+ }
}
/**
diff --git a/src/conf/LayerSewers.js b/src/conf/LayerSewers.js
index 4f69adf..02f9a31 100644
--- a/src/conf/LayerSewers.js
+++ b/src/conf/LayerSewers.js
@@ -100,6 +100,7 @@
code: 'fsss',
name: '闄勫睘璁炬柦',
checked: false, // 榛樿閫変腑鐘舵��
+ url: APP_GIS_HOST_2 + '/layer/findLayer?layerName={sname}',
filters: [
{
code: 'fourlink',
@@ -163,6 +164,7 @@
code: 'hbss',
name: '鐜繚璁炬柦',
checked: false, // 榛樿閫変腑鐘舵��
+ url: APP_GIS_HOST_2 + '/layer/findLayer?layerName={sname}',
filters: [
{
code: 'manhole',
@@ -219,6 +221,7 @@
code: 'pk',
name: '鎺掑彛',
checked: false, // 榛樿閫変腑鐘舵��
+ url: APP_GIS_HOST_2 + '/layer/findLayer?layerName={sname}',
filters: [
{
code: 'dischargeport',
@@ -233,6 +236,7 @@
code: 'qyxx',
name: '鍖哄煙淇℃伅',
checked: false, // 榛樿閫変腑鐘舵��
+ url: APP_GIS_HOST_2 + '/layer/findLayer?layerName={sname}',
filters: [
{
code: 'thirdpartypipe',
diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js
index dccff74..fdaa00f 100644
--- a/src/conf/MapConfig.js
+++ b/src/conf/MapConfig.js
@@ -27,7 +27,8 @@
inertia: true,
zoomControl: false,
attributionControl: false,
- editable: true
+ editable: true,
+ preferCanvas: true
}
const mapConfig = {
diff --git a/src/main.js b/src/main.js
index 45c8a84..cf57dcb 100644
--- a/src/main.js
+++ b/src/main.js
@@ -11,6 +11,7 @@
import 'leaflet/dist/leaflet.css'
import L from 'leaflet'
import 'leaflet.markercluster'
+import 'leaflet-canvas-markers'
Vue.config.productionTip = false
Vue.use(ElementUI, { size: 'small' })
diff --git a/src/store/modules/map.js b/src/store/modules/map.js
index c6b997e..6016809 100644
--- a/src/store/modules/map.js
+++ b/src/store/modules/map.js
@@ -14,12 +14,20 @@
selectedServiceLayer: '', // 浣跨敤杩囨护鍣ㄦ椂锛岃鎵撳紑鐨刉MS鏈嶅姟鐨凜ODE
serviceLayerFilters: {}, // 鏈嶅姟鍥惧眰鎺у埗杩囨护閰嶇疆
checkedLayers: {}, // 閫変腑鍥惧眰瀵硅薄
+ // 鍥惧眰鏁版嵁
+ datas: {
+ sewers: []
+ },
config: config,
serviceLayers: config.mapConfig.Layers
}
const mutations = {
setMapObj (state, map) {
state.map = map
+ },
+ // 璁剧疆姹¢洦姘村浘灞傛暟鎹�
+ setSewersDatas (state, sewersDatas) {
+ state.datas.sewers = sewersDatas
},
setBasemapHelper (state, layerHelper) {
state.basemapHelper = layerHelper
@@ -43,9 +51,7 @@
state.showServiceLayerFilter = !state.showServiceLayerFilter
}
}
-const actions = {
-
-}
+const actions = {}
export default {
state,
mutations,
--
Gitblit v1.8.0