From 1b09fe890938f123fbcccf235620384b7cd9b721 Mon Sep 17 00:00:00 2001 From: zhangshuaibao <15731629597@163.com> Date: 星期二, 30 三月 2021 17:36:31 +0800 Subject: [PATCH] Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop --- src/components/LayerController/logic/WasteGas.js | 46 ++++ src/api/request.js | 2 src/components/LayerController/service/AnimalService.js | 37 +++ src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue | 33 ++ src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue | 53 +++++ src/components/LayerController/logic/Sample.js | 4 src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue | 20 + src/components/LayerController/service/LayerFactory.js | 27 +- src/components/BaseNav/PublicBounced/PublicBounced.vue | 18 + src/components/BaseNav/SolidWaste/SolidWaste.js | 27 ++ src/components/LayerController/service/WmsLayerService.js | 6 src/components/BaseNav/SolidWaste/directive.js | 73 ------- src/components/LayerController/service/WfsLayerService.js | 14 src/conf/Constants.js | 3 src/components/LayerController/service/BusiLayerService.js | 13 src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue | 123 ++++++++++++ src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue | 88 -------- 17 files changed, 365 insertions(+), 222 deletions(-) diff --git a/src/api/request.js b/src/api/request.js index 38364ca..9f9091d 100644 --- a/src/api/request.js +++ b/src/api/request.js @@ -21,4 +21,4 @@ 'Content-Type': 'application/json' } }) -} +} \ No newline at end of file diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue index 5d557e0..a499fb1 100644 --- a/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue +++ b/src/components/BaseNav/PublicBounced/GasComponents/GasECharts.vue @@ -1,10 +1,20 @@ <template> - <div class="ShowEcharts"> - <div id="echarts" ref="main"></div> - <div class="border_corner border_corner_left_top"></div> - <div class="border_corner border_corner_right_top"></div> - <div class="border_corner border_corner_left_bottom"></div> - <div class="border_corner border_corner_right_bottom"></div> + <!-- 妗� --> + <div class="win"> + <!-- 鍥涗釜瑙掔殑杈规鏁堟灉 --> + <div class="border_corner border_corner_left_top"></div> + <div class="border_corner border_corner_right_top"></div> + <div class="border_corner border_corner_left_bottom"></div> + <div class="border_corner border_corner_right_bottom"></div> + <div class="main"> + <div class="ShowEcharts"> + <div id="echarts" ref="main"></div> + <div class="border_corner border_corner_left_top"></div> + <div class="border_corner border_corner_right_top"></div> + <div class="border_corner border_corner_left_bottom"></div> + <div class="border_corner border_corner_right_bottom"></div> + </div> + </div> </div> </template> @@ -153,6 +163,13 @@ </script> <style scoped lang="less"> + .win { + width: 100%; + height: 100%; + position: relative; + //display: inline-block; + background-color: rgba(33, 41, 69,0.9); + } .ShowEcharts{ position: relative; display: inline-block; @@ -197,4 +214,8 @@ width: 600px; height: 260px; } +.main { + width: 100%; + height: 100%; +} </style> diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue new file mode 100644 index 0000000..e05f59f --- /dev/null +++ b/src/components/BaseNav/PublicBounced/GasComponents/GasTab.vue @@ -0,0 +1,123 @@ +<template> + <!-- 妗� --> + <div class="win"> + <!-- 鍥涗釜瑙掔殑杈规鏁堟灉 --> + <div class="border_corner border_corner_left_top"></div> + <div class="border_corner border_corner_right_top"></div> + <div class="border_corner border_corner_left_bottom"></div> + <div class="border_corner border_corner_right_bottom"></div> + <div class="main"> + <div class="main-matter"> + <el-row type="flex" class="row-bg row-item-one" justify="space-around"> + <el-col :span="12">鐩戞祴鐐瑰悕绉�:{{ displayContent.Name }}</el-col> + <el-col :span="12">鐢熶骇鍗曚綅:{{ displayContent.DeptSname }}</el-col> + <el-col :span="12">鎺掓斁绫诲瀷鍔犺浇:{{ displayContent.EmissTypeName }}</el-col> + </el-row> + <el-row type="flex" class="row-bg" justify="space-around"> + <el-col :span="12">鎺掓斁鍘诲悜:{{ displayContent.EmissTypeDirectName }}</el-col> + <el-col :span="12">鎺у埗绾у埆鍚嶇О:{{ displayContent.ContrLevelShowName }}</el-col> + <el-col :span="12">鍐�/澶栨帓鍙�:{{ displayContent.OrOutPortName }}</el-col> + </el-row> + </div> + </div> + </div> +</template> + +<script> +export default { + name: 'GasTable', + props: ['displayContent'], + data () { + return {} + } +} +</script> + +<style scoped lang="less"> + +.win { + position: relative; + //display: inline-block; + margin-bottom: 13px; + background-color: rgba(33, 41, 69,0.9); +} +.main { + width: 100%; + height: 100%; + .main-matter{ + font-size: 13px; + padding: 9px 7px; + font-weight: normal; + border: 1px solid #396d83; + .row-item-one{ + margin-bottom: 7px; + } + .el-row { + width: 100%; + color: #00d0f9; + display: flex; + font-size: 12px!important; + .el-col{ + flex: 1; + width: 100%; + background-color: #243a55;; + text-align: center; + line-height: 28px; + margin-left: 6px; + border-radius: 4px; + &:nth-child(1){ + margin-left:0; + } + } + } + } +} +.border_corner{ + z-index: 2500; + position: absolute; + width: 10px; + height: 10px; + background: rgba(0,0,0,0); + border: 1.5px solid #47d5ea; +} +.border_corner_left_top{ + top: 0; + left: 0; + border-right: none; + border-bottom: none; +} +.border_corner_right_top{ + top: 0; + right: 0; + border-left: none; + border-bottom: none; +} +.border_corner_left_bottom{ + bottom: 0; + left: 0; + border-right: none; + border-top: none; +} +.border_corner_right_bottom{ + bottom: 0; + right: 0; + border-left: none; + border-top: none; +} +//.el-row { +// width: 100%; +// color: #00d0f9; +// .el-col{ +// width: 180px; +// height: 28px; +// background-color: #243a55;; +// text-align: center; +// line-height: 28px; +// margin-left: 6px; +// border-radius: 4px; +// &:nth-child(1){ +// margin-left:0; +// } +// } +//} +</style> diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue index 2497f08..e69de29 100644 --- a/src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue +++ b/src/components/BaseNav/PublicBounced/GasComponents/GasTable.vue @@ -1,88 +0,0 @@ -<template> - <!-- 妗� --> - <div class="win"> - <!-- 鍥涗釜瑙掔殑杈规鏁堟灉 --> - <div class="border_corner border_corner_left_top"></div> - <div class="border_corner border_corner_right_top"></div> - <div class="border_corner border_corner_left_bottom"></div> - <div class="border_corner border_corner_right_bottom"></div> - <div class="main"> - <el-row type="flex" class="row-bg" justify="space-around"> - <el-col :span="12">鐩戞祴鐐瑰悕绉�:{{ displayContent.Name }}</el-col> - <el-col :span="12">鐢熶骇鍗曚綅:{{ displayContent.DeptSname }}</el-col> - <el-col :span="12">鎺掓斁绫诲瀷鍔犺浇:{{ displayContent.EmissTypeName }}</el-col> - </el-row> - <el-row type="flex" class="row-bg" justify="space-around"> - <el-col :span="12">鎺掓斁鍘诲悜:{{ displayContent.EmissTypeDirectName }}</el-col> - <el-col :span="12">鎺у埗绾у埆鍚嶇О:{{ displayContent.ContrLevelShowName }}</el-col> - <el-col :span="12">鍐�/澶栨帓鍙�:{{ displayContent.OrOutPortName }}</el-col> - </el-row> - </div> - </div> -</template> - -<script> -export default { - name: 'GasTable', - props: ['displayContent'], - data () { - return {} - } -} -</script> - -<style scoped lang="less"> - -.win { - position: relative; - display: inline-block; - //border: 1px solid #396d83; -} -.main { - width: 100%; - height: 100%; -} -.border_corner{ - z-index: 2500; - position: absolute; - width: 14px; - height: 14px; - background: rgba(0,0,0,0); - border: 2px solid #47d5ea; -} -.border_corner_left_top{ - top: 0; - left: 0; - border-right: none; - border-bottom: none; -} -.border_corner_right_top{ - top: 0; - right: 0; - border-left: none; - border-bottom: none; -} -.border_corner_left_bottom{ - bottom: 0; - left: 0; - border-right: none; - border-top: none; - border-bottom-left-radius: 4px; -} -.border_corner_right_bottom{ - bottom: 0; - right: 0; - border-left: none; - border-top: none; -} -.el-row { - color: #00d0f9; - .el-col{ - width: 200px; - height: 28px; - background-color: #243a55; - text-align: center; - line-height: 28px; - } -} -</style> diff --git a/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue b/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue index eb83145..fc152ab 100644 --- a/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue +++ b/src/components/BaseNav/PublicBounced/GasComponents/GasVideo.vue @@ -1,12 +1,12 @@ <template> - <div class="win"> + <div class="win" > <!-- 鍥涗釜瑙掔殑杈规鏁堟灉 --> <div class="border_corner border_corner_left_top"></div> <div class="border_corner border_corner_right_top"></div> <div class="border_corner border_corner_left_bottom"></div> <div class="border_corner border_corner_right_bottom"></div> <div class="main"> - <div> + <div class="main-video"> <video width="100%" height="100%" controls> <source src="movie.mp4" type="video/mp4"> <source src="movie.ogg" type="video/ogg"> @@ -22,17 +22,22 @@ } </script> -<style scoped> +<style scoped lang="less"> .win { - width: 100%; + /*width: 100%;*/ /*height: 100%;*/ position: relative; - display: inline-block; -//border: 1px solid #396d83; + //display: inline-block; + background-color: rgba(33, 41, 69,0.9); +/*//border: 1px solid #396d83;*/ } .main { width: 100%; height: 100%; + .main-video { + padding: 7px; + border: 1px solid #396d83; + } } .border_corner{ z-index: 2500; @@ -40,7 +45,7 @@ width: 14px; height: 14px; background: rgba(0,0,0,0); - border: 2px solid #47d5ea; + border: 1.5px solid #47d5ea; } .border_corner_left_top{ top: 0; @@ -59,7 +64,6 @@ left: 0; border-right: none; border-top: none; - border-bottom-left-radius: 4px; } .border_corner_right_bottom{ bottom: 0; diff --git a/src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue b/src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue new file mode 100644 index 0000000..2c878b8 --- /dev/null +++ b/src/components/BaseNav/PublicBounced/GasComponents/PublicTable.vue @@ -0,0 +1,53 @@ +<template> + <div class="public-table"> + <table border="1"> + <tr> + <th>111</th> + <th>111</th> + <th>111</th> + <th>111</th> + <th>111</th> + <th>111</th> + </tr> + <tr> + <td>4444444444</td> + <td>4444444444</td> + <td>4444444444</td> + <td>4444444444</td> + <td>4444444444</td> + <td>4444444444</td> + </tr> + </table> + </div> +</template> + +<script> +export default { + name: 'PublicTable', + data () { + return { + tableData: [{ + date: '2016-05-02', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�' + }, { + date: '2016-05-04', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�' + }, { + date: '2016-05-01', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�' + }, { + date: '2016-05-03', + name: '鐜嬪皬铏�', + address: '涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�' + }] + } + } +} +</script> + +<style lang="less" scoped> + +</style> diff --git a/src/components/BaseNav/PublicBounced/PublicBounced.vue b/src/components/BaseNav/PublicBounced/PublicBounced.vue index eddeb78..275b86e 100644 --- a/src/components/BaseNav/PublicBounced/PublicBounced.vue +++ b/src/components/BaseNav/PublicBounced/PublicBounced.vue @@ -6,8 +6,9 @@ </div> <div class="public-bounced-content"> <div class="public-bounced-content-left"> - <GasTable :displayContent="displayContent"></GasTable> - <GasECharts></GasECharts> + <GasTab :displayContent="displayContent"></GasTab> + <PublicTable v-if="value === 'gufei'"></PublicTable> + <GasECharts v-else></GasECharts> </div> <div class="public-bounced-content-right"> <GasVideo></GasVideo> @@ -19,14 +20,16 @@ <script> import '@/components/BaseNav/SolidWaste/directive' -import GasTable from '@components/BaseNav/PublicBounced/GasComponents/GasTable' +import GasTab from '@components/BaseNav/PublicBounced/GasComponents/GasTab' +import PublicTable from '@components/BaseNav/PublicBounced/GasComponents/PublicTable' import GasECharts from '@components/BaseNav/PublicBounced/GasComponents/GasECharts' import GasVideo from '@components/BaseNav/PublicBounced/GasComponents/GasVideo' export default { name: 'PublicBounced', components: { - GasTable, + GasTab, + PublicTable, GasECharts, GasVideo }, @@ -37,9 +40,10 @@ } }, methods: { - setData (data) { + setData (data, value) { this.displayContent = data this.flag = true + this.value = value }, closePopup () { this.flag = false @@ -51,7 +55,7 @@ <style lang="less" scoped> .public-bounced { z-index: 999; - position: fixed; + position: absolute; top: 50%; left: 50%; background-color: #002432; @@ -90,4 +94,4 @@ } } -</style> +</style> \ No newline at end of file diff --git a/src/components/BaseNav/SolidWaste/SolidWaste.js b/src/components/BaseNav/SolidWaste/SolidWaste.js index 54107a5..6df5e3e 100644 --- a/src/components/BaseNav/SolidWaste/SolidWaste.js +++ b/src/components/BaseNav/SolidWaste/SolidWaste.js @@ -52,20 +52,24 @@ // var url = Icon.options.iconUrl const marker = this.L.marker([positionX, positionY], { icon: Icon }) - // 鍒掕繃鍑虹幇 灞曠ず鏁版嵁 marker.bindTooltip(data[i].Name, { permanent: true, - offset: [0, 16], - direction: 'bottom', + offset: [0, -16], + direction: 'top', className: '' }) // 鐐瑰嚮 浜嬩欢 marker.on('click', (e) => { try { - console.log(e) + // console.log(e) + // console.log(this.map.getCenter()) + // console.log(this.map.setCenter([e.target.getLatLng().lat, e.target.getLatLng().lng])) + // this.map.flyTo([e.target.getLatLng().lat, e.target.getLatLng().lng]) + // this.map.panTo([e.target.getLatLng().lat, e.target.getLatLng().lng], 100) + this.setPanTo(e.target.getLatLng(), 30) this.EffectOfPulse(e.target.getLatLng()) - this.SolidWastePopup.setData(data[i]) + this.SolidWastePopup.setData(data[i], 'gufei') return this.SolidWastePopup.$el } catch (error) { console.log(error) @@ -75,6 +79,16 @@ this.SolidWasteLayerGroup.addLayer(marker) } } + } + + // panTo + setPanTo (pos, value) { + var position = pos + position = this.map.latLngToLayerPoint(position) + position.y += value + position = this.map.layerPointToLatLng(position) + this.map.setView(position) + // this.map.flyTo(position) } // 鍥哄簾鐐瑰嚮杩涜鐨� 鍐呭鐨勮缃� @@ -106,7 +120,7 @@ // 鑴夊啿鏁堟灉璁剧疆瀹炵幇 EffectOfPulse (position, markers, layerGroup) { - // // 鍖哄垎鐩存帴鎵ц 鍜屽垽鏂墽琛岀殑涓嶅悓鍖哄埆 + // 鍖哄垎鐩存帴鎵ц 鍜屽垽鏂墽琛岀殑涓嶅悓鍖哄埆 var differentColor = '' if (markers) { differentColor = '#ff0000' @@ -140,7 +154,6 @@ var HeightLightTime = 5 var PulseNumber = 5 const pulseinterver = setInterval((e) => { - console.log(e) if (PulseNumber > 0) { PulseNumber-- } else { diff --git a/src/components/BaseNav/SolidWaste/directive.js b/src/components/BaseNav/SolidWaste/directive.js index 773a4a8..d51b377 100644 --- a/src/components/BaseNav/SolidWaste/directive.js +++ b/src/components/BaseNav/SolidWaste/directive.js @@ -57,76 +57,3 @@ delete el._checkPosition } }) - -// v-dialogDrag: 寮圭獥鎷栨嫿 -Vue.directive('dialogDrag', { - bind (el, binding, vnode, oldVnode) { - const dialogHeaderEl = el.querySelector('.el-dialog__header') - const dragDom = el.querySelector('.el-dialog') - dialogHeaderEl.style.cursor = 'move' - - // 鑾峰彇鍘熸湁灞炴�� ie dom鍏冪礌.currentStyle 鐏嫄璋锋瓕 window.getComputedStyle(dom鍏冪礌, null); - const sty = dragDom.currentStyle || window.getComputedStyle(dragDom, null) - - dialogHeaderEl.onmousedown = (e) => { - // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂� - const disX = e.clientX - dialogHeaderEl.offsetLeft - const disY = e.clientY - dialogHeaderEl.offsetTop - - // 鑾峰彇鍒扮殑鍊煎甫px 姝e垯鍖归厤鏇挎崲 - let styL, styT - - // 娉ㄦ剰鍦╥e涓� 绗竴娆¤幏鍙栧埌鐨勫�间负缁勪欢鑷甫50% 绉诲姩涔嬪悗璧嬪�间负px - if (sty.left.includes('%')) { - styL = +document.body.clientWidth * (+sty.left.replace(/%/g, '') / 100) - styT = +document.body.clientHeight * (+sty.top.replace(/%/g, '') / 100) - } else { - styL = +sty.left.replace(/px/g, '') - styT = +sty.top.replace(/px/g, '') - } - - document.onmousemove = function (e) { - // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈 - const l = e.clientX - disX - const t = e.clientY - disY - - // 绉诲姩褰撳墠鍏冪礌 - dragDom.style.left = `${l + styL}px` - dragDom.style.top = `${t + styT}px` - - // 灏嗘鏃剁殑浣嶇疆浼犲嚭鍘� - // binding.value({x:e.pageX,y:e.pageY}) - } - - document.onmouseup = function (e) { - document.onmousemove = null - document.onmouseup = null - } - } - } -}) - -// v-dialogDragWidth: 寮圭獥瀹藉害鎷栧ぇ 鎷栧皬 -Vue.directive('dialogDragWidth', { - bind (el, binding, vnode, oldVnode) { - const dragDom = binding.value.$el.querySelector('.el-dialog') - - el.onmousedown = (e) => { - // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂� - const disX = e.clientX - el.offsetLeft - - document.onmousemove = function (e) { - e.preventDefault() // 绉诲姩鏃剁鐢ㄩ粯璁や簨浠� - - // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈 - const l = e.clientX - disX - dragDom.style.width = `${l}px` - } - - document.onmouseup = function (e) { - document.onmousemove = null - document.onmouseup = null - } - } - } -}) diff --git a/src/components/LayerController/logic/Sample.js b/src/components/LayerController/logic/Sample.js index 687b0e7..063123f 100644 --- a/src/components/LayerController/logic/Sample.js +++ b/src/components/LayerController/logic/Sample.js @@ -1,9 +1,9 @@ module.exports = function () { - this.init = (layer) => { + this.init = (L) => { console.log('sample init !!!') } - this.clickListener = (list) => { + this.clickListener = (e, data) => { console.log('sample clickListener !!!') } } diff --git a/src/components/LayerController/logic/WasteGas.js b/src/components/LayerController/logic/WasteGas.js new file mode 100644 index 0000000..2744f36 --- /dev/null +++ b/src/components/LayerController/logic/WasteGas.js @@ -0,0 +1,46 @@ +/** + * 搴熸皵 + */ +const AnimalService = require('../service/AnimalService').default +const AjaxUtils = require('../../../utils/AjaxUtils').default + +module.exports = function () { + /** + * 杩斿洖marker瀵硅薄鏁扮粍 + * @param L leaflet瀵硅薄 + */ + this.init = (layer, L) => { + this.animalService = new AnimalService({ L: L, layer: layer }) + AjaxUtils.get4JsonDataByUrl('http://10.246.162.140:8080/EPInterface/DataService/EPMapService.asmx/ObtainningConInfo', { + companyId: 3900100145, + id: '', + monType: 1, + userCode: 'wenchun.deng', + monDuration: '', + epName: '', + secdDeptId: '', + contrLevel: '', + dataStatus: '', + dataFlag: '', + runStatus: '', + emissTypeId: '' + }, function (res) { + const data = res.data.Result.DataInfo + for (let i = 0; i < data.length; i++) { + // 缁忕含搴� 浣嶇疆 + const positionX = data[i].Latitude + const positionY = data[i].Longitude + layer.addLayer(L.marker([positionX, positionY], {})) + } + }) + } + + this.bindTooltip = (layer) => { + return '娴嬭瘯搴熸皵' + } + + this.clickListener = (e) => { + console.log(e) + this.animalService.pulseEffect(e.latlng) + } +} diff --git a/src/components/LayerController/service/AnimalService.js b/src/components/LayerController/service/AnimalService.js new file mode 100644 index 0000000..9a80b7f --- /dev/null +++ b/src/components/LayerController/service/AnimalService.js @@ -0,0 +1,37 @@ +/** + * 鍔ㄦ�佹晥鏋滃皝瑁� + */ +class AnimalService { + constructor (config) { + this.intervals = [] // 瀹氭椂鍣ㄥ垪琛� + this.L = config.L + this.layer = config.layer + this.times = config.times || 5 + this.colors = ['#98FB98', '#ff0000'] + } + + /** + * 鑴夊啿鏁堟灉 + */ + pulseEffect (xy) { + // 鎻掍欢 鏁堟灉瀹炵幇 + var pulsingIcon = this.L.icon.pulse({ + iconSize: [20, 20], + color: this.colors[0], + fillColor: '' + }) + var picGroupMarker = this.L.marker(xy, { icon: pulsingIcon }).addTo(this.layer) + var times = this.times + // 瀹氭椂 + var timeInterval = setInterval(() => { + if (times > 0) { + times-- + } else { + clearInterval(timeInterval) + picGroupMarker.remove() + } + }, 1000) + } +} + +export default AnimalService diff --git a/src/components/LayerController/service/BusiLayerService.js b/src/components/LayerController/service/BusiLayerService.js index 254a819..d63962e 100644 --- a/src/components/LayerController/service/BusiLayerService.js +++ b/src/components/LayerController/service/BusiLayerService.js @@ -13,18 +13,21 @@ init (layer) { // 寮曞叆 鍏宠仈鐨刯s锛屽湪constant.js涓牴鎹甤onfig閰嶇疆鐨刬d寰楀埌澶勭悊js const id = this.config.code - console.log(logicMapper) const file = logicMapper[id] if (!file) { console.log('鎵句笉鍒伴�昏緫澶勭悊js!!!') } else { - console.log('-----' + file) var BusiLayer = require('../logic/' + file) - console.log(BusiLayer) var busiLayer = new BusiLayer() - // 璋冪敤init - busiLayer.init(layer) + busiLayer.init(layer, this.L) + if (busiLayer.bindTooltip) { + layer.bindTooltip(busiLayer.bindTooltip(layer)) + } // 璋冪敤click浜嬩欢 + if (busiLayer.clickListener) { + layer.on('click', busiLayer.clickListener) + } + layer.addTo(this.map) } } } diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js index 7626125..e7a585c 100644 --- a/src/components/LayerController/service/LayerFactory.js +++ b/src/components/LayerController/service/LayerFactory.js @@ -2,15 +2,12 @@ import WfsLayerService from './WfsLayerService' import BusiLayerService from './BusiLayerService' import WmsLayerService from './WmsLayerService' + class LayerFactory { constructor (options) { this.L = options.L this.map = window.map this.layers = {} - } - - createLayerGroup () { - return this.L.layerGroup().addTo(this.map) } init () { @@ -25,28 +22,26 @@ var wfs = childConfig.wfs var wms = childConfig.wms var url = childConfig.url - // 鍒ゆ柇鏄惁宸茬粡鍔犺浇杩囷紝鍔犺浇杩囧氨 蹇界暐鎺� - const layer = this.layers[code] + // 鍒ゆ柇鏄惁宸茬粡鍔犺浇杩囷紝鍔犺浇杩囧氨 鐩存帴寰楀埌瀵硅薄璋冪敤 鏄剧ず鍑芥暟 + var layer = this.layers[code] if (!layer) { - const newLayer = this.createLayerGroup() - this.layers[code] = newLayer + layer = this.L.featureGroup({}).addTo(this.map) // 2. 鍒ゆ柇绫诲瀷 if (wfs) { // 3. 瀹炰緥鍖栧叿浣搒ervice - // var busiLayerService = new BusiLayerService() - // busiLayerService.init() var wfsLayerService = new WfsLayerService(childConfig) - wfsLayerService.init(newLayer) + wfsLayerService.init(layer) } if (wms) { var wmsLayerService = new WmsLayerService(childConfig) - wmsLayerService.init(newLayer) + wmsLayerService.init(layer) } // 璇锋眰涓氬姟鏁版嵁鎺ュ彛 if (url) { var busiLayerService = new BusiLayerService(childConfig) - busiLayerService.init(newLayer) + busiLayerService.init(layer) } + layer ? (this.layers[code] = layer) : console.log('LayerFactory锛歯ewLayer is null锛宲lease check !!!') } else { this.show(code) } @@ -69,9 +64,9 @@ } /** - * 璁剧疆index,绾垮湪鏈�涓嬮潰锛岀偣鍦ㄤ笂闈� - * @param layerGroup 鍥惧眰缁� - */ + * 璁剧疆index,绾垮湪鏈�涓嬮潰锛岀偣鍦ㄤ笂闈� + * @param layerGroup 鍥惧眰缁� + */ setZIndex (layerGroup) { var layers = layerGroup.getLayers() if (layers.length > 0) { diff --git a/src/components/LayerController/service/WfsLayerService.js b/src/components/LayerController/service/WfsLayerService.js index e5a175d..8d55234 100644 --- a/src/components/LayerController/service/WfsLayerService.js +++ b/src/components/LayerController/service/WfsLayerService.js @@ -21,15 +21,20 @@ } 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, { + this.L.geoJSON(features, { style: function (feature) { return { fill: styles.defaultLineStyle.fill, @@ -66,8 +71,7 @@ .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) } mouseOverListener (e, layer) { diff --git a/src/components/LayerController/service/WmsLayerService.js b/src/components/LayerController/service/WmsLayerService.js index b818aec..859334d 100644 --- a/src/components/LayerController/service/WmsLayerService.js +++ b/src/components/LayerController/service/WmsLayerService.js @@ -1,11 +1,11 @@ -class WfsLayerService { +class WmsLayerService { constructor (config) { this.config = config } - init () { + init (layer) { } } -export default WfsLayerService +export default WmsLayerService diff --git a/src/conf/Constants.js b/src/conf/Constants.js index cef757c..97a3af7 100644 --- a/src/conf/Constants.js +++ b/src/conf/Constants.js @@ -7,7 +7,8 @@ export const logicMapper = { fsqy: 'Sample.js', fspfk: 'Sample.js', - fsjcd: 'Sample.js' + fsjcd: 'Sample.js', + wasteGasJcd: 'WasteGas.js' } export const props = { -- Gitblit v1.8.0