src/components/helpers/ServiceLayerHelper.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/panel/LegendPanel.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/plugin/PathDashFlow.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/conf/Styles.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/components/helpers/ServiceLayerHelper.js
@@ -126,13 +126,12 @@ const res = await AjaxUtils.GetDataAsynByUrl(newUrl, {}) if (res.data instanceof Object && Object.prototype.hasOwnProperty.call(res.data, 'features')) { store.commit('addSewersDatas', res.data) if (newUrl.indexOf('管网') !== -1 || newUrl.indexOf('四通') !== -1) { var layer = that.loadGeojson(res.data, item) that.layerArray[code] = layer } } } else { that.layerArray[code].addTo(that.map) var _layer = that.layerArray[code].addTo(that.map) that.setZIndex(_layer) } } @@ -143,7 +142,8 @@ loadGeojson (res, opt) { var that = this var icon = opt.icon const layergroup = that.L.featureGroup().addTo(that.map) const featureGroup = that.L.featureGroup() const featureList = [] const geojson = that.L.geoJSON(res.features, { style: function (feature) { return { @@ -152,9 +152,9 @@ fillColor: styles.defaultLineStyle.fillColor, color: styles.defaultLineStyle.color, fillOpacity: styles.defaultLineStyle.fillOpacity, opacity: styles.defaultLineStyle.opacity // dashArray: styles.defaultLineStyle.dashArray, // dashSpeed: styles.defaultLineStyle.dashSpeed opacity: styles.defaultLineStyle.opacity, dashArray: styles.defaultLineStyle.dashArray, dashSpeed: styles.defaultLineStyle.dashSpeed } }, pointToLayer: function (geoJsonPoint, latlng) { @@ -166,8 +166,12 @@ size: styles.defaultLineStyle.size } }) } }).bindPopup(function (layer) { }, onEachFeature: function (feature, layer) { console.log(feature) console.log(layer) featureList.push(layer) layer.bindPopup(function (layer) { that.popupComp.setDatas(layer) that.popupComp.setShow() return that.popupComp.$el @@ -191,8 +195,7 @@ return name }, { direction: 'bottom', offset: [0, 15], sticky: true }) .on('mouseover', function (e) { const layer = e.layer const type = e.layer.feature.geometry.type const type = e.target.feature.geometry.type if (type === 'LineString' || type === 'MultiLineString') { layer.setStyle({ weight: 8, color: '#00ffff' }) } else if (type === 'Point' || type === 'MultiPoint') { @@ -206,8 +209,7 @@ layer.bringToFront() } }).on('mouseout', function (e) { const layer = e.layer const type = e.layer.feature.geometry.type const type = e.target.feature.geometry.type if (type === 'LineString' || type === 'MultiLineString') { layer.setStyle({ weight: styles.defaultLineStyle.weight, color: styles.defaultLineStyle.color }) } @@ -219,15 +221,30 @@ } }) } // }).addTo(that.map) }).addTo(layergroup) store.commit('addSewersDatas', geojson) if (Object.prototype.hasOwnProperty.call(res, 'features') && res.features.length > 0 && (res.features[0].geometry.type === 'LineString' || res.features[0].geometry.type === 'MultiLineString')) { geojson.bringToBack() } else { geojson.bringToFront() }).addTo(featureGroup) } return geojson }) store.commit('addSewersDatas', geojson) featureGroup.addTo(that.map) that.setZIndex(featureGroup) return featureGroup } /** * 设置index,线在最下面,点在上面 * @param layerGroup 图层组 */ setZIndex (layerGroup) { console.log(layerGroup) var layers = layerGroup.getLayers() if (layers.length > 0) { var layer = layers[0] if (layer.feature && (layer.feature.geometry.type === 'LineString' || layer.feature.geometry.type === 'MultiLineString')) { layerGroup.bringToBack() } else { layerGroup.bringToFront() } } } removeLayer (item) { src/components/panel/LegendPanel.vue
@@ -4,7 +4,7 @@ <i class="el-icon-more-outline"></i> <span>图例</span> </div> <transition name='fade'> <transition name="fade"> <div class="legend-content" v-show="legendControl"> <div class="legend-content-box" v-for="(item,index) in legendContents" :key="index"> <p>{{ item.title }}</p> src/components/plugin/PathDashFlow.js
@@ -1,7 +1,5 @@ // @class PolyLine import * as L from 'leaflet' const DashFlow = () => { const L = window.L L.Path.mergeOptions({ // @option dashSpeed: Number // The speed of the dash array, in pixels per second @@ -35,9 +33,65 @@ this._lastDashFrame = performance.now() this._dashFrame = L.Util.requestAnimFrame(this._onDashFrame.bind(this)) } }, _offDashFrame: function () { L.Util.cancelAnimFrame(this._dashFrame) }, onRemove: function () { this._renderer._removePath(this) this._offDashFrame() } }) // 针对Canvas添加dashOffset参数,解决Canvas下无法实现动态线问题 L.Canvas.include({ _updateDashArray: function (layer) { if (typeof layer.options.dashArray === 'string') { var parts = layer.options.dashArray.split(/[, ]+/) var dashArray = [] var dashValue var i for (i = 0; i < parts.length; i++) { dashValue = Number(parts[i]) // Ignore dash array containing invalid lengths if (isNaN(dashValue)) { return } dashArray.push(dashValue) } layer.options._dashArray = dashArray } else { layer.options._dashArray = layer.options.dashArray } export default { DashFlow } if (layer.options.dashOffset) { layer.options._dashOffset = layer.options.dashOffset } }, _fillStroke: function (ctx, layer) { var options = layer.options if (options.fill) { ctx.globalAlpha = options.fillOpacity ctx.fillStyle = options.fillColor || options.color ctx.fill(options.fillRule || 'evenodd') } if (options.stroke && options.weight !== 0) { if (ctx.setLineDash) { ctx.setLineDash((layer.options && layer.options._dashArray) || []) } if (layer.options._dashOffset) { ctx.lineDashOffset = layer.options._dashOffset } ctx.globalAlpha = options.opacity ctx.lineWidth = options.weight ctx.strokeStyle = options.color ctx.lineCap = options.lineCap ctx.lineJoin = options.lineJoin ctx.stroke() } } }) src/conf/Styles.js
@@ -5,8 +5,8 @@ color: '#73b2ff', fillOpacity: 0.2, opacity: 1, dashArray: '10,4', dashSpeed: -10, dashArray: '5,5', dashSpeed: -5, size: [20, 20] } src/main.js
@@ -1,4 +1,4 @@ import 'babel-polyfill' // import 'babel-polyfill' import Vue from 'vue' import App from './App.vue' import router from './router' @@ -10,11 +10,7 @@ import 'element-ui/lib/theme-chalk/index.css' import 'leaflet/dist/leaflet.css' import L from 'leaflet' import 'leaflet.markercluster' // import 'leaflet-canvas-markers' import './components/plugin/Leaflet.GridLayer.FadeOut' import './components/plugin/leaflet-canvas-markers' Vue.config.productionTip = false Vue.use(ElementUI)