From 0110b78419d98e114c59fa9fb6f69663fbdc3c98 Mon Sep 17 00:00:00 2001
From: 陈泽平 <chenzeping>
Date: 星期日, 30 五月 2021 19:37:35 +0800
Subject: [PATCH] Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop
---
src/assets/images/map-pages/buffer/8.png | 0
src/assets/images/map-pages/buffer/3.png | 0
src/assets/css/map/map-panel-style.less | 8
src/components/base-page/enterprise-emergency/event-handling/EventHandling.vue | 8
src/components/plugin/L.CircleEditor.js | 216 +++++++++++++++
src/Sgis.js | 1
src/components/base-page/enterprise-emergency/DisposalEvent.vue | 40 ++
src/assets/images/map-pages/buffer/img.png | 0
src/assets/images/map-pages/buffer/2.png | 0
src/assets/images/map-pages/buffer/15.png | 0
src/assets/images/map-pages/buffer/area_query_drag.png | 0
src/assets/images/map-pages/buffer/1.png | 0
src/assets/images/map-pages/buffer/7.png | 0
src/assets/images/map-pages/buffer/10.png | 0
src/assets/images/map-pages/buffer/5.png | 0
src/components/base-page/enterprise-emergency/event-handling/BufferQuery.js | 553 +++++++++++++++++++++++++++++++++++++++
16 files changed, 818 insertions(+), 8 deletions(-)
diff --git a/src/Sgis.js b/src/Sgis.js
index 6e9dd2b..16feefe 100644
--- a/src/Sgis.js
+++ b/src/Sgis.js
@@ -14,6 +14,7 @@
import '@/components/plugin/magicMarker.css'
import '@components/plugin/pulse/Pulse' // marker 澶栧湀娉�
import '@components/plugin/pulse/Pulse.css' // marker 澶栧湀娉� css
+import '@components/plugin/L.CircleEditor'
import BasemapHelper from './components/helpers/BasemapHelper'
import VectorLayerHelper from './components/helpers/VectorLayerHelper'
diff --git a/src/assets/css/map/map-panel-style.less b/src/assets/css/map/map-panel-style.less
index 1ec2a41..f4ac982 100644
--- a/src/assets/css/map/map-panel-style.less
+++ b/src/assets/css/map/map-panel-style.less
@@ -28,7 +28,8 @@
}
.el-button--mini, .el-button--mini.is-round {
- padding: 0.02rem 0.04rem;
+ margin-left: 5px;
+ margin-right: 5px;
}
/*闅愯棌*/
@@ -164,6 +165,11 @@
background-color: @background-color-light;
border: solid 1px @color;
}
+
+ input:hover {
+ border: solid 1px @color;
+ }
+
}
.map-tooltip.is-dark {
diff --git a/src/assets/images/map-pages/buffer/1.png b/src/assets/images/map-pages/buffer/1.png
new file mode 100644
index 0000000..1c045b3
--- /dev/null
+++ b/src/assets/images/map-pages/buffer/1.png
Binary files differ
diff --git a/src/assets/images/map-pages/buffer/10.png b/src/assets/images/map-pages/buffer/10.png
new file mode 100644
index 0000000..85241da
--- /dev/null
+++ b/src/assets/images/map-pages/buffer/10.png
Binary files differ
diff --git a/src/assets/images/map-pages/buffer/15.png b/src/assets/images/map-pages/buffer/15.png
new file mode 100644
index 0000000..1793d5a
--- /dev/null
+++ b/src/assets/images/map-pages/buffer/15.png
Binary files differ
diff --git a/src/assets/images/map-pages/buffer/2.png b/src/assets/images/map-pages/buffer/2.png
new file mode 100644
index 0000000..9f87b74
--- /dev/null
+++ b/src/assets/images/map-pages/buffer/2.png
Binary files differ
diff --git a/src/assets/images/map-pages/buffer/3.png b/src/assets/images/map-pages/buffer/3.png
new file mode 100644
index 0000000..d473da8
--- /dev/null
+++ b/src/assets/images/map-pages/buffer/3.png
Binary files differ
diff --git a/src/assets/images/map-pages/buffer/5.png b/src/assets/images/map-pages/buffer/5.png
new file mode 100644
index 0000000..9f0cb2c
--- /dev/null
+++ b/src/assets/images/map-pages/buffer/5.png
Binary files differ
diff --git a/src/assets/images/map-pages/buffer/7.png b/src/assets/images/map-pages/buffer/7.png
new file mode 100644
index 0000000..20ef506
--- /dev/null
+++ b/src/assets/images/map-pages/buffer/7.png
Binary files differ
diff --git a/src/assets/images/map-pages/buffer/8.png b/src/assets/images/map-pages/buffer/8.png
new file mode 100644
index 0000000..38bb71c
--- /dev/null
+++ b/src/assets/images/map-pages/buffer/8.png
Binary files differ
diff --git a/src/assets/images/map-pages/buffer/area_query_drag.png b/src/assets/images/map-pages/buffer/area_query_drag.png
new file mode 100644
index 0000000..eebc54d
--- /dev/null
+++ b/src/assets/images/map-pages/buffer/area_query_drag.png
Binary files differ
diff --git a/src/assets/images/map-pages/buffer/img.png b/src/assets/images/map-pages/buffer/img.png
new file mode 100644
index 0000000..9358712
--- /dev/null
+++ b/src/assets/images/map-pages/buffer/img.png
Binary files differ
diff --git a/src/components/base-page/enterprise-emergency/DisposalEvent.vue b/src/components/base-page/enterprise-emergency/DisposalEvent.vue
index c7c4c15..2b7b0a5 100644
--- a/src/components/base-page/enterprise-emergency/DisposalEvent.vue
+++ b/src/components/base-page/enterprise-emergency/DisposalEvent.vue
@@ -48,7 +48,7 @@
<el-col class="info-text" :span="18">{{ form.eventDesc }}</el-col>
</el-row>
<el-row>
- <el-col class="info-label" span="6">闄勪欢锛�</el-col>
+ <el-col class="info-label" :span="6">闄勪欢锛�</el-col>
<el-col class="info-text" :span="18"><a class="link-btn" href="javascript:">闄勪欢</a>
<a class="link-btn" href="javascript:">闄勪欢</a>
@@ -94,8 +94,12 @@
</div>
</el-scrollbar>
<div class="event-management">
- <el-input></el-input>
- <el-button type="primary" size="mini" @click="ToManagement">寮�濮嬪垎鏋�</el-button>
+ <el-button type="primary" size="mini" @click="mapClick">鍦板浘鐐归��</el-button>
+ <el-select v-model="radius.value" placeholder="璇烽�夋嫨" size="mini" class="map-input">
+ <el-option v-for="(item,index) in radius.options" :key="index" :label="item.label" :value="item.value"></el-option>
+ </el-select>
+ <el-button type="primary" size="mini" @click="eventHanding">寮�濮嬪垎鏋�</el-button>
+ <el-button type="primary" size="mini" @click="toManagement">浜嬩欢绠$悊</el-button>
<!-- <el-button size="mini">鍏抽棴</el-button>-->
</div>
</div>
@@ -105,12 +109,17 @@
<script>
import eventBus from '../../../eventBus'
-
+import BufferQuery from '@components/base-page/enterprise-emergency/event-handling/BufferQuery'
export default {
name: 'DisposalEvent',
data () {
return {
+ bufferQuery: null,
activeNames: ['1'],
+ radius: {
+ value: 0.1,
+ options: [{ label: '500m', value: 0.5 }, { label: '1km', value: 1 }, { label: '2km', value: 2 }, { label: '5km', value: 5 }, { label: '10km', value: 10 }]
+ },
form: {
nameOfEvent: '***************浜嬩欢',
eventLocation: '**********瑁呯疆',
@@ -170,9 +179,13 @@
]
}
},
+ mounted () {
+ this.bufferQuery = new BufferQuery(window.map, window.L)
+ this.bufferQuery.initLayers()
+ },
methods: {
// 寮�濮嬪垎鏋�
- ToManagement () {
+ eventHanding () {
eventBus.$emit('event-handling', {})
},
handleClickView (item) {
@@ -183,6 +196,23 @@
},
handleChange (val) {
console.log(val)
+ },
+ mapClick () {
+ window.map.once('click', (e) => {
+ console.log(e)
+ // [-75.343, 39.984];
+
+ // var circle = turf.circle(center, radius, options)
+ // eslint-disable-next-line no-unreachable
+ this.bufferQuery.radius = this.radius.value
+ const lat = 32.26431369781494
+ const lng = 118.79283785820007
+ // this.bufferQuery.bufferQuery(e.latlng.lng, e.latlng.lat)
+ this.bufferQuery.bufferQuery(lng, lat)
+ })
+ },
+ toManagement () {
+
}
}
}
diff --git a/src/components/base-page/enterprise-emergency/event-handling/BufferQuery.js b/src/components/base-page/enterprise-emergency/event-handling/BufferQuery.js
new file mode 100644
index 0000000..e3b5a41
--- /dev/null
+++ b/src/components/base-page/enterprise-emergency/event-handling/BufferQuery.js
@@ -0,0 +1,553 @@
+/**
+ * 缂撳啿鍖烘煡璇㈢被
+ */
+import * as turf from '@turf/turf'
+import $ from 'jquery'
+// import MapConfig from '@/map/conf/MapConfig'
+import zrbhq from '@assets/images/map-pages/buffer/1.png'
+import yjdw from '@assets/images/map-pages/buffer/2.png'
+import gadw from '@assets/images/map-pages/buffer/3.png'
+import yy from '@assets/images/map-pages/buffer/5.png'
+import st from '@assets/images/map-pages/buffer/7.png'
+import yjzy from '@assets/images/map-pages/buffer/8.png'
+import xfdw from '@assets/images/map-pages/buffer/10.png'
+import mgmb from '@assets/images/map-pages/buffer/15.png'
+const MapConfig = {
+
+}
+MapConfig.mapConfig = {}
+MapConfig.mapConfig.bufferQueryUrlProd = 'http://10.238.235.179:6240/geoserver/sewer/ows'
+class BufferQuery {
+ constructor (map, L) {
+ this.map = map
+ this.L = L
+ this.bufferLayer = null
+ this.resultLayer = null
+ this.resultMarkers = []
+ this.queryResults = []
+ this.radius = 10
+ this.currentRadius = null
+ this.bufferResultLayerArr = []
+ this.bufferQueryLayerArr = []
+ this.vueRef = null
+ this.currentX = null
+ this.currentY = null
+ }
+
+ setVueRef (vueRef) {
+ this.vueRef = vueRef
+ }
+
+ initLayers () {
+ // if (this.bufferLayer != null) {
+ this.bufferLayer = this.L.layerGroup().addTo(this.map)
+ // }
+ // if (this.resultLayer != null) {
+ this.resultLayer = this.L.layerGroup().addTo(this.map)
+ // }
+ }
+
+ drawCricleBuffer (center, radius) {
+ const circleLocation = new this.L.LatLng(center[1], center[0])
+ const circleOptions = {
+ color: '#3effed',
+ fillColor: 'white',
+ fillOpacity: 0,
+ extendedIconClass: 'extend-icon' /* there are 3 classes defined in the marker-extend.css file */
+ }
+ const circle = new this.L.CircleEditor(circleLocation, radius * 1000, circleOptions)
+ return circle
+ }
+
+ getCircleCoord (center, radius) {
+ const options = { steps: 10, units: 'kilometers' }
+ const circle = turf.circle(center, radius, options)
+ const coordinate = turf.getCoords(circle)
+ return coordinate
+ }
+
+ QueryInfoByArcgis (url, dis, geom, extent, layers) {
+ const that = this
+ const data = {
+ f: 'json',
+ tolerance: dis,
+ returnGeometry: 'true',
+ returnFieldName: 'false',
+ returnUnformattedValues: 'false',
+ imageDisplay: '920,622,96',
+ geometry: geom,
+ geometryType: 'esriGeometryPolygon',
+ sr: '4326',
+ mapExtent: extent,
+ layers: layers
+ }
+ this.vueRef.datas = []
+ this.vueRef.allDatas = []
+ this.vueRef.currentX = this.currentX
+ this.vueRef.currentY = this.currentY
+ this.vueRef.total = 0
+ this.vueRef.total1 = 0
+ this.vueRef.countsMap = {}
+ this._postQuery(url, data, function (res) {
+ console.log(res)
+ if (res.results != null && res.results.length !== 0) {
+ that.drawGraphic(res.results)
+ for (let i = 0; i < res.results.length; i++) {
+ const ndata = {
+ layerId: res.results[i].layerId,
+ layerName: res.results[i].layerName,
+ displayFieldName: res.results[i].displayFieldName,
+ value: res.results[i].value,
+ attributes: res.results[i].attributes,
+ geometryType: res.results[i].geometryType,
+ geometry: res.results[i].geometry,
+ feature: {
+ attributes: res.results[i].attributes,
+ geometry: res.results[i].geometry
+ }
+ }
+ that.queryResults.push(ndata)
+ }
+ // fillBufferResult(nrltData,currShowBufferLayerIndex);//濉厖闈㈡澘
+ that.fillBufferResultPanel(that.queryResults)
+ }
+ })
+ }
+
+ QueryInfoByGeoserver (url, dis, geom, extent, layers) {
+ const that = this
+ const data = {
+ service: 'WFS',
+ version: '1.1.0',
+ request: 'GetFeature',
+ // typeName: 'sewer:manhole',
+ typeName: 'sewer:pipeline',
+ maxFeatures: 50,
+ outputFormat: 'application/json',
+ srsname: 'EPSG:4326',
+ // filter: '<Filter xmlns="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">\n' +
+ // '<Intersects><PropertyName>geom</PropertyName><gml:Polygon srsName="EPSG:4326">\n' +
+ // '<gml:outerBoundaryIs>\n' +
+ // ' <gml:LinearRing>\n' +
+ // eslint-disable-next-line no-irregular-whitespace
+ // '銆�<gml:coordinates>' + geom + '</gml:coordinates>\n' +
+ // '</gml:LinearRing>\n' +
+ // '</gml:outerBoundaryIs>\n' +
+ // '</gml:Polygon></Intersects></Filter>\n'
+
+ /* filter: '<Filter xmlns:ogc="http://www.opengis.net/ogc" xmlns:gml="http://www.opengis.net/gml">\n' +
+ '\n' +
+ '<Intersects> \n' +
+ '\n' +
+ '<PropertyName>geom</PropertyName>\n' +
+ '\n' +
+ '<gml:MultiPolygon srsName="EPSG:4490"> \n' +
+ '\n' +
+ '<gml:polygonMember> \n' +
+ '\n' +
+ '<gml:Polygon> \n' +
+ '\n' +
+ '<gml:outerBoundaryIs> \n' +
+ '\n' +
+ '<gml:LinearRing>\n' +
+ '\n' +
+ '<gml:coordinates xmlns:gml="http://www.opengis.net/gml" decimal="." cs="," ts="">\n' +
+ '\n' +
+ geom +
+ '\n' +
+ '</gml:coordinates> \n' +
+ '\n' +
+ '</gml:LinearRing> \n' +
+ '\n' +
+ '</gml:outerBoundaryIs> \n' +
+ '\n' +
+ '</gml:Polygon> \n' +
+ '\n' +
+ '</gml:polygonMember> \n' +
+ '\n' +
+ '</gml:MultiPolygon>\n' +
+ '\n' +
+ '</Intersects>\n' +
+ '\n' +
+ '</Filter>' */
+
+ cql_filter: 'INTERSECTS(geom,POLYGON((' + geom + ')))'
+ }
+ // this.vueRef.datas = []
+ // this.vueRef.allDatas = []
+ // this.vueRef.currentX = this.currentX
+ // this.vueRef.currentY = this.currentY
+ // this.vueRef.total = 0
+ // this.vueRef.total1 = 0
+ // this.vueRef.countsMap = {}
+ this._postQuery(url, data, function (res) {
+ console.log(res)
+ if (res.results != null && res.results.length !== 0) {
+ that.drawGraphic(res.results)
+ for (let i = 0; i < res.results.length; i++) {
+ const ndata = {
+ layerId: res.results[i].layerId,
+ layerName: res.results[i].layerName,
+ displayFieldName: res.results[i].displayFieldName,
+ value: res.results[i].value,
+ attributes: res.results[i].attributes,
+ geometryType: res.results[i].geometryType,
+ geometry: res.results[i].geometry,
+ feature: {
+ attributes: res.results[i].attributes,
+ geometry: res.results[i].geometry
+ }
+ }
+ that.queryResults.push(ndata)
+ }
+ // fillBufferResult(nrltData,currShowBufferLayerIndex);//濉厖闈㈡澘
+ that.fillBufferResultPanel(that.queryResults)
+ }
+ })
+ }
+
+ fillBufferResultPanel (datas) {
+ // let resArray = []
+ const that = this
+ const layerIds = []
+ for (let j = 0; j < this.bufferQueryLayerArr.length; j++) {
+ if (this.bufferQueryLayerArr[j].ifSelected) {
+ layerIds.push(this.bufferQueryLayerArr[j].layerid)
+ }
+ }
+ const ndatas = []
+ for (let i = 0; i < datas.length; i++) {
+ if (datas[i].layerId === layerIds[0]) {
+ const newObj = {}
+ newObj.id = i
+ if (Number(datas[i].layerId) === 10) {
+ newObj.objid = datas[i].feature.attributes.id
+ newObj.name = datas[i].feature.attributes.name
+ } else {
+ newObj.objid = datas[i].feature.attributes.OBJECTID
+ newObj.name = datas[i].value
+ }
+
+ newObj.distance = this.countDisByLatLng(datas[i].feature.geometry.x, datas[i].feature.geometry.y, this.currentX, this.currentY)
+ newObj.x = datas[i].feature.geometry.x
+ newObj.y = datas[i].feature.geometry.y
+ switch (datas[i].layerId) {
+ case 5:
+ case 3:
+ case 8:
+ newObj.addr = datas[i].feature.attributes['鍗曚綅鍦板潃'] === 'Null' ? '' : datas[i].feature.attributes['鍗曚綅鍦板潃']
+ newObj.person = datas[i].feature.attributes['鑱旂郴浜�'] === 'Null' ? '' : datas[i].feature.attributes['鑱旂郴浜�']
+ newObj.tel = datas[i].feature.attributes['鑱旂郴鐢佃瘽'] === 'Null' ? '' : datas[i].feature.attributes['鑱旂郴鐢佃瘽']
+ break
+ case 10:
+ newObj.addr = datas[i].feature.attributes.name
+ newObj.person = datas[i].feature.attributes.contact
+ newObj.tel = datas[i].feature.attributes.officeTel
+ break
+ case 9:
+ case 15:
+ newObj.addr = ''
+ newObj.person = datas[i].feature.attributes['璐熻矗浜�'] === 'Null' ? '' : datas[i].feature.attributes['璐熻矗浜�']
+ newObj.tel = datas[i].feature.attributes['鑱旂郴鐢佃瘽'] === 'Null' ? '' : datas[i].feature.attributes['鑱旂郴鐢佃瘽']
+ break
+ case 7:
+ newObj.addr = ''
+ newObj.person = ''
+ newObj.tel = datas[i].feature.attributes['鑱旂郴鏂瑰紡'] === 'Null' ? '' : datas[i].feature.attributes['鑱旂郴鏂瑰紡']
+ break
+ case 1:
+ newObj.addr = ''
+ newObj.person = datas[i].feature.attributes['璐熻矗浜�'] === 'Null' ? '' : datas[i].feature.attributes['璐熻矗浜�']
+ newObj.tel = datas[i].feature.attributes['鑱旂郴鐢佃瘽'] === 'Null' ? '' : datas[i].feature.attributes['鑱旂郴鐢佃瘽']
+ break
+ }
+ ndatas.push(newObj)
+ }
+ }
+ this.vueRef.datas = ndatas
+ this.vueRef.allDatas = datas
+ this.vueRef.currentX = this.currentX
+ this.vueRef.currentY = this.currentY
+ this.vueRef.total = datas.length
+ this.vueRef.total1 = ndatas.length
+ const Map = {}
+ for (let k = 0; k < layerIds.length; k++) {
+ const id = layerIds[k]
+ Map[id] = that.getCountByLayerID(datas, layerIds[k])
+ }
+ this.vueRef.countsMap = Map
+ }
+
+ /**
+ *鏍规嵁涓ょ偣缁忕含搴﹁绠楄窛绂�
+ * @param lng1
+ * @param lat1
+ * @param lng2
+ * @param lat2
+ */
+ countDisByLatLng (lng1, lat1, lng2, lat2) {
+ const a = this.Rad(lat1) - this.Rad(lat2)
+ const b = this.Rad(lng1) - this.Rad(lng2)
+ let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) +
+ Math.cos(this.Rad(lat1)) * Math.cos(this.Rad(lat2)) * Math.pow(Math.sin(b / 2), 2)))
+ s = s * 6378137.0
+ s = Math.round(s * 10000) / 10000000
+ return s.toFixed(3)
+ }
+
+ Rad (d) {
+ return d * Math.PI / 180.0
+ }
+
+ /**
+ * 鏍规嵁鍥惧眰id 鑾峰彇 鍚勪釜鍥惧眰鏌ヨ缁撴灉鐨勬暟閲�
+ * @param arrs
+ * @param id
+ */
+ getCountByLayerID (arrs, id) {
+ let count = 0
+ for (let i = 0; i < arrs.length; i++) {
+ if (arrs[i].layerId === id) {
+ count++
+ }
+ }
+ return count
+ }
+
+ _postQuery (url, data, cb) {
+ $.ajax({
+ type: 'GET',
+ url: url,
+ dataType: 'json',
+ data: data,
+ timeout: 600000,
+ async: true,
+ success: function (datas) {
+ cb(datas)
+ },
+ error: function (e) {
+ console.log('杩斿洖鐨勯敊璇俊鎭細', e)
+ return null
+ }
+ })
+ }
+
+ drawGraphic (data) {
+ for (let i = 0; i < data.length; i++) {
+ const pt = [data[i].geometry.y, data[i].geometry.x]
+ const iconUrl = this.getIconUrl(data[i].layerId)
+ const icon = new this.L.Icon({ iconUrl: iconUrl, iconSize: [20, 20], iconAnchor: [10, 10] })
+ const marker = this.L.marker(pt, {
+ icon: icon,
+ attributes: data[i]
+ })
+ this.markerBindPopup(marker)
+ this.resultMarkers.push(marker)
+ this.resultLayer.addLayer(marker)
+ }
+ }
+
+ markerBindPopup (maker) {
+ const name = maker.options.attributes.value
+ const layerId = maker.options.attributes.layerId
+ let addr = ''
+ let person = ''
+ let tel = ''
+ const distance = this.countDisByLatLng(maker.options.attributes.geometry.x, maker.options.attributes.geometry.y, this.currentX, this.currentY)
+ switch (layerId) {
+ case 5:
+ case 3:
+ case 8:
+ addr = maker.options.attributes.attributes['鍗曚綅鍦板潃'] === 'Null' ? '' : maker.options.attributes.attributes['鍗曚綅鍦板潃']
+ person = maker.options.attributes.attributes['鑱旂郴浜�'] === 'Null' ? '' : maker.options.attributes.attributes['鑱旂郴浜�']
+ tel = maker.options.attributes.attributes['鑱旂郴鐢佃瘽'] === 'Null' ? '' : maker.options.attributes.attributes['鑱旂郴鐢佃瘽']
+ break
+ case 10:
+ addr = maker.options.attributes.attributes.name
+ person = maker.options.attributes.attributes.contact
+ tel = maker.options.attributes.attributes.officeTel
+ break
+ case 9:
+ case 15:
+ addr = ''
+ person = maker.options.attributes.attributes['璐熻矗浜�'] === 'Null' ? '' : maker.options.attributes.attributes['璐熻矗浜�']
+ tel = maker.options.attributes.attributes['鑱旂郴鐢佃瘽'] === 'Null' ? '' : maker.options.attributes.attributes['鑱旂郴鐢佃瘽']
+ break
+ case 7:
+ addr = ''
+ person = ''
+ tel = maker.options.attributes.attributes['鑱旂郴鏂瑰紡'] === 'Null' ? '' : maker.options.attributes.attributes['鑱旂郴鏂瑰紡']
+ break
+ case 1:
+ addr = ''
+ person = maker.options.attributes.attributes['璐熻矗浜�'] === 'Null' ? '' : maker.options.attributes.attributes['璐熻矗浜�']
+ tel = maker.options.attributes.attributes['鑱旂郴鐢佃瘽'] === 'Null' ? '' : maker.options.attributes.attributes['鑱旂郴鐢佃瘽']
+ break
+ }
+
+ const html = '<div style="width: 306px; height: 156px" class="aroundPanel">' +
+ '<div class="header">鍛ㄨ竟鐜</div>' +
+ '<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="editform edit-pf bg1 pd1" style="color: #deebf9;line-height: 26px;">\n' +
+ ' <tr>\n' +
+ ' <td width="10%" align="right" valign="top" class="zt05">鍚嶇О锛�</td>\n' +
+ ' <td width="19%" align="left" valign="top" class="zt05" id="name">' + name + '</td>\n' +
+ ' </tr>\n' +
+ ' <tr>\n' +
+ ' <td align="right" valign="top" class="zt05">鍦板潃锛�</td>\n' +
+ ' <td align="left" valign="top" class="zt05" id="addr">' + addr + '</td>\n' +
+ ' </tr>\n' +
+ ' <tr>\n' +
+ ' <td align="right" valign="top" class="zt05">璐熻矗浜猴細</td>\n' +
+ ' <td align="left" valign="top" class="zt05" id="person">' + person + '</td>\n' +
+ ' </tr>\n' +
+ ' <tr>\n' +
+ ' <td align="right" valign="top" class="zt05">鑱旂郴鐢佃瘽锛�</td>\n' +
+ ' <td align="left" valign="top" class="zt05" id="tel">' + tel + '</td>\n' +
+ ' </tr>\n' +
+ ' <tr>\n' +
+ ' <td align="right" valign="top" class="zt05 line-dotted">璺濈锛堝叕閲岋級锛�</td>\n' +
+ ' <td align="left" valign="top" class="zt05 line-dotted" id="distance">' + distance + '</td>\n' +
+ ' </tr>\n' +
+ ' </table>' +
+ '</div>'
+ maker.bindPopup(html, {
+ closeButton: false,
+ offset: this.L.point(0, -0.5)
+ })
+ }
+
+ getIconUrl (index) {
+ let url = null
+ switch (index) {
+ case 1:
+ url = zrbhq
+ break
+ case 2:
+ url = yjdw
+ break
+ case 3:
+ url = gadw
+ break
+ case 5:
+ url = yy
+ break
+ case 7:
+ url = st
+ break
+ case 8:
+ url = yjzy
+ break
+ case 10:
+ url = xfdw
+ break
+ case 15:
+ url = mgmb
+ break
+ }
+ return url
+ }
+
+ bufferQuery (currEventX, currEventY) {
+ this.currentX = currEventX
+ this.currentY = currEventY
+ const that = this
+ if (this.bufferLayer) {
+ this.bufferLayer.clearLayers()
+ }
+ this.map.setView(this.L.latLng(currEventY, currEventX), 11)
+ const circle = this.drawCricleBuffer([currEventX, currEventY], this.radius)
+ this.bufferLayer.addLayer(circle)
+ circle.on('edit', function () {
+ that.doBuffer(circle.getRadius() / 1000, that.bufferQueryLayerArr, that.currentX, that.currentY)
+ that.currentRadius = circle.getRadius() / 1000
+ })
+ this.doBuffer(this.radius, this.bufferQueryLayerArr, currEventX, currEventY)
+ }
+
+ doBuffer (radius, bufferQueryLayerArr, currEventX, currEventY) {
+ this.bufferResultLayerArr = this.getBufferLayerArr(bufferQueryLayerArr)
+ this.bufferSearch(this.bufferResultLayerArr, radius, currEventX, currEventY)
+ }
+
+ getBufferLayerArr (arr) {
+ var resultArr = []
+ for (let i = 0; i < arr.length; i++) {
+ const obj = arr[i]
+ if (obj.ifSelected === 1) {
+ resultArr.push(obj.layerid)
+ }
+ }
+ return resultArr
+ }
+
+ bufferSearch (layerIDs, radius, currEventX, currEventY) {
+ const that = this
+ that.resultMarker = []
+ that.queryResults = []
+ if (that.resultLayer) {
+ that.resultLayer.clearLayers()
+ }
+ // if (layerIDs == null || layerIDs.length === 0) {
+ // return null
+ // }
+ const xfIndex = layerIDs.indexOf(10)
+ if (xfIndex > -1) {
+ }
+ let queryLayerStr = 'all:'
+ for (let j = 0; j < layerIDs.length; j++) {
+ if (layerIDs[j] !== 10) {
+ queryLayerStr += layerIDs[j] + ','
+ }
+ }
+ queryLayerStr = queryLayerStr.substring(0, queryLayerStr.length - 1)
+ const coord = that.getCircleCoord([currEventX, currEventY], radius)
+ const str = that.sgisTransfromToArcGeom(coord)
+ debugger
+ const bounds = this.map.getBounds()
+ const extent = bounds.toBBoxString()
+ debugger
+ if (window.vm.$nodeEnv === 'production') {
+ that.QueryInfoByGeoserver(MapConfig.mapConfig.bufferQueryUrlProd, radius, str, extent, queryLayerStr)
+ // that.QueryInfoByArcgis(MapConfig.mapConfig.bufferQueryUrlProd, radius, str, extent, queryLayerStr)
+ } else {
+ that.QueryInfoByGeoserver(MapConfig.mapConfig.bufferQueryUrlProd, radius, str, extent, queryLayerStr)
+ // that.QueryInfoByArcgis(MapConfig.mapConfig.bufferQueryUrlProd, radius, str, extent, queryLayerStr)
+ }
+ }
+
+ sgisTransfromToArcGeom (coord) {
+ const geomStr = ''
+ let str = ''
+ for (let i = 0; i < coord[0].length; i++) {
+ str += coord[0][i][0] + ' ' + coord[0][i][1] + ','
+ }
+ str = str.substring(0, str.length - 1)
+ const endStr = geomStr + str
+ return endStr
+ }
+
+ /* sgisTransfromToArcGeom (coord) {
+ const geomStr = '{"rings":[['
+ let str = ''
+ for (let i = 0; i < coord[0].length; i++) {
+ str += '[' + coord[0][i][0] + ',' + coord[0][i][1] + '],'
+ }
+ str = str.substring(0, str.length - 1)
+ const endStr = geomStr + str + ']]}'
+ return endStr
+ } */
+ setBufferQueryLayerArr (bufferQueryLayerArr) {
+ this.bufferQueryLayerArr = bufferQueryLayerArr
+ }
+
+ cleanLayer () {
+ if (this.bufferLayer) {
+ this.bufferLayer.clearLayers()
+ }
+ if (this.resultLayer) {
+ this.resultLayer.clearLayers()
+ }
+ this.map.closePopup()
+ }
+}
+export default BufferQuery
diff --git a/src/components/base-page/enterprise-emergency/event-handling/EventHandling.vue b/src/components/base-page/enterprise-emergency/event-handling/EventHandling.vue
index a4ec6ef..b0d39c3 100644
--- a/src/components/base-page/enterprise-emergency/event-handling/EventHandling.vue
+++ b/src/components/base-page/enterprise-emergency/event-handling/EventHandling.vue
@@ -15,7 +15,7 @@
<el-button type="primary" size="mini" @click="toggleShowCalc">浜嬫晠姘磋绠�</el-button>
<el-button type="primary" size="mini" @click="toggleShowResInfo">鍛ㄨ竟璧勬簮</el-button>
<el-button type="primary" size="mini" @click="toggleShowReportDoc">鐢熸垚鎶ュ憡</el-button>
- <el-button type="primary" size="mini" @click="close">杩斿洖</el-button>
+<!-- <el-button type="primary" size="mini" @click="close">杩斿洖</el-button>-->
</div>
<effective-volume-calc ref="effectVolCalc"></effective-volume-calc>
@@ -75,6 +75,10 @@
}
</script>
-<style scoped>
+<style lang="less" scoped>
+.footer{
+ text-align: right;
+ margin: 15px;
+}
</style>
diff --git a/src/components/plugin/L.CircleEditor.js b/src/components/plugin/L.CircleEditor.js
new file mode 100644
index 0000000..c7d9d17
--- /dev/null
+++ b/src/components/plugin/L.CircleEditor.js
@@ -0,0 +1,216 @@
+/*
+ * L.CircleEditor is an extension of L.Circle, just to add the edition part (remember, radius in meters).
+ */
+'use strict'
+/* eslint-disable */
+import dragPng from '../../assets/images/map-pages/buffer/area_query_drag.png'
+// const init = (L) => {
+ L.CircleEditor = L.Circle.extend ({
+
+ options: {
+ icon: new L.Icon({
+ iconUrl: dragPng,
+ iconSize: [30,30],
+ //className: 'leaflet-div-icon leaflet-editing-icon'
+ }),
+ extendedIconClass : 'extend-icon'
+ },
+
+ onAdd: function (map) {
+ L.Path.prototype.onAdd.call(this, map);
+
+ this.addHooks();
+ },
+
+ onRemove: function (map) {
+ this.removeHooks();
+
+ L.Path.prototype.onRemove.call(this, map);
+ },
+
+
+ addHooks: function () {
+ if (this._map) {
+ if (!this._markerGroup) {
+ this._initMarkers();
+ }
+ this._map.addLayer(this._markerGroup);
+ }
+ },
+
+ removeHooks: function () {
+ if (this._map) {
+ this._map.removeLayer(this._markerGroup);
+ delete this._markerGroup;
+ delete this._markers;
+ }
+ },
+
+ updateMarkers: function () {
+ this._markerGroup.clearLayers();
+ this._initMarkers();
+ },
+
+ _initMarkers: function () {
+ this._markerGroup = new L.LayerGroup();
+ this._markers = [];
+
+ var markerCenter = this._createMarker(this._latlng, 0, true);
+ this._markers.push(markerCenter);
+
+ var circleBounds = this.getBounds(),
+ center = circleBounds.getCenter(),
+ neCoord = circleBounds.getNorthEast(),
+ northCenterCoord = new L.LatLng(center.lat, neCoord.lng, true);
+ var markerNorthCenter = this._createMarker(northCenterCoord, 1);
+ this._markers.push(markerNorthCenter);
+
+ //xinzeng label
+ var newNeCoord = Number(neCoord.lng.toFixed(6))+Number(0.006030);
+ var labelCenterCood = new L.LatLng(center.lat,newNeCoord, true);
+ var markerLabel = this._createLableMaker(labelCenterCood,2,this.getRadius())
+ this._markers.push(markerLabel);
+ },
+
+ _createLableMaker:function(latlng,index,radius){
+ var html = parseInt(radius/1000) + "Km";
+ var icon = new L.DivIcon({
+ html:html,
+ iconSize: new L.Point(30, 15),
+ className: 'customLabel'
+ });
+ var marker = new L.Marker(latlng, {
+ // draggable: true,
+ icon: icon
+ });
+ marker._origLatLng = latlng;
+ marker._index = index;
+ // marker._isCenter = isCenter;
+ this._markerGroup.addLayer(marker);
+ return marker;
+ },
+
+ _createMarker: function (latlng, index, isCenter) {
+ if(isCenter){
+ var marker = new L.Marker(latlng, {
+ draggable: true,
+ icon: this.options.icon,
+ opacity :0
+ });
+ }else{
+ var marker = new L.Marker(latlng, {
+ draggable: true,
+ icon: this.options.icon
+ });
+ }
+
+
+ if (isCenter === undefined) {
+ isCenter = false;
+ }
+ //console.log("this is center point: " + isCenter);
+
+ marker._origLatLng = latlng;
+ marker._index = index;
+ marker._isCenter = isCenter;
+
+ if (isCenter) {
+ //marker.on('drag', this._onCenterMove, this)
+ // .on('dragend', this._onCenterMoveEnd, this);
+ } else {
+ marker.on('drag', this._onMarkerDrag, this);
+ marker.on('dragend', this._fireEdit, this)
+ .on('mouseover', this._onMouseOver, this)
+ .on('mouseout', this._onMouseOut, this);
+ }
+
+
+ this._markerGroup.addLayer(marker);
+
+ return marker;
+ },
+ _onMouseOver: function (e) {
+ var target = e.target,
+ icon = target._icon,
+ classValues = icon.getAttribute("class");
+ //icon.setAttribute("class", "extend-icon " + classValues);
+ icon.setAttribute("class", this.options.extendedIconClass + " " + classValues);
+ },
+ _onMouseOut: function (e) {
+ var target = e.target,
+ icon = target._icon,
+ classValues = icon.getAttribute("class");
+ //icon.setAttribute("class", classValues.replace("extend-icon", ""));
+ icon.setAttribute("class", classValues.replace(this.options.extendedIconClass, ""));
+ },
+
+ _fireEdit: function () {
+ this.fire('edit');
+ },
+
+ _onCenterMove: function (e) {
+ var marker = e.target;
+ //console.log("center move - START");
+
+ L.Util.extend(marker._origLatLng, marker._latlng);
+
+ var mm = this._markers[1];
+ mm.setOpacity(0.1);
+
+ this.redraw();
+
+ //console.log("END");
+ },
+
+ _onCenterMoveEnd: function (e) {
+ var marker = e.target;
+
+ //now resetting the side point
+ var circleBounds = this.getBounds(),
+ center = circleBounds.getCenter(),
+ neCoord = circleBounds.getNorthEast(),
+ northCenterCoord = new L.LatLng(center.lat, neCoord.lng, true);
+
+ var mm = this._markers[1];
+ mm.setLatLng(northCenterCoord);
+ mm.setOpacity(1);
+
+ this.fire('centerchange');
+ },
+
+ _onMarkerDrag: function (e) {
+ var marker = e.target;
+ //console.log("marker drag - START");
+ var center = this._markers[0].getLatLng();
+ var axis = marker._latlng;
+
+ var distance = center.distanceTo(axis);
+
+ this.setRadius(distance);
+
+ this.redraw();
+ //console.log("END");
+
+ this.fire('radiuschange');
+
+
+ this._markerGroup.removeLayer(this._markers[2]);
+ this._markers.pop();
+
+ var circleBounds = this.getBounds(),
+ center = circleBounds.getCenter(),
+ neCoord = circleBounds.getNorthEast();
+ var newNeCoord = Number(neCoord.lng.toFixed(6))+Number(0.011010);
+ var labelCenterCood1 = new L.LatLng(center.lat,newNeCoord, true);
+ var markerLabel1 = this._createLableMaker(labelCenterCood1,2,this.getRadius())
+ this._markers.push(markerLabel1);
+ },
+
+ centerchange: function() {},
+ radiuschange: function() {}
+ });
+// }
+//
+// export default {
+// init
+// }
--
Gitblit v1.8.0