From 168ac91270d86fee33d10659eb1c8c605b247b5c Mon Sep 17 00:00:00 2001 From: ihzero Date: Thu, 8 Jun 2023 12:05:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=B0=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/images/sheep.png | Bin 2624 -> 2413 bytes src/views/base/base-data/base.data.ts | 25 +++ src/views/visualization/components/Map.vue | 221 ++++++++++++--------- 3 files changed, 150 insertions(+), 96 deletions(-) diff --git a/src/assets/images/sheep.png b/src/assets/images/sheep.png index 5348aad0acede4df871b5d1dca1b8466e7708446..88713fbabf5c6eddaf7b77663211012ac93eb25e 100644 GIT binary patch literal 2413 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 literal 2624 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 i_2Fjw0eP { + // // console.log(); + + // // return model[field] ? '是' : '否' + // // }, + // }, + // { + // field: 'blank_url', + // label: '外部链接', + // required: false, + // component: 'Input', + // ifShow: ({ values }) => { + // return !!values.is_blank + // }, + // }, + { field: 'industry_key', label: '产业类型', diff --git a/src/views/visualization/components/Map.vue b/src/views/visualization/components/Map.vue index 07b59f71..cfb57ada 100644 --- a/src/views/visualization/components/Map.vue +++ b/src/views/visualization/components/Map.vue @@ -35,6 +35,7 @@ import { useVisualizationStore } from '/@/store/modules/visualization' import SheepImg from '/@/assets/images/sheep.png' import PigImg from '/@/assets/images/pig.png' + import { forEach } from 'lodash-es' const domImg = document.createElement('img') domImg.style.height = '8px' @@ -90,26 +91,49 @@ { value: 1, label: '稻渔综合种养', - color: 'rgb(242,230,230 , 0.7)', + color: 'rgb(30,54,80 , 0.8)', type: 'map', + data: [ + { + value: [105.198605, 29.280154], + }, + ], }, { value: 2, label: '优品柑桔种植', - color: 'rgb(187,216,106 , 0.7)', + color: 'rgb(54,89,114,0.8)', type: 'map', + data: [ + { + value: [105.383917, 29.387026], + }, + { + value: [105.194187, 29.364692], + }, + ], }, { value: 3, label: '高粱产业', - color: 'rgb(238,98,73 , 0.7)', + color: 'rgba(147, 235, 248, 0.2)', type: 'map', + data: [ + { + value: [105.116049, 29.388207], + }, + ], }, { value: 4, label: '油茶产业', - color: 'rgb(172,220,243 , 0.7)', + color: 'rgb(172,220,243 , 0.4)', type: 'map', + data: [ + { + value: [105.386462, 29.317352], + }, + ], }, { value: 5, @@ -120,12 +144,7 @@ { map: '', name: '猪', - value: ['105.283094', '29.234786'], - }, - { - map: '', - name: '猪', - value: ['105.338434', '29.388883'], + value: [105.292327, 29.401826], }, ], }, @@ -138,17 +157,7 @@ { map: '', name: '羊', - value: ['105.287507', '29.339408'], - }, - { - map: '', - name: '羊', - value: ['105.147012', '29.442367'], - }, - { - map: '', - name: '羊', - value: ['105.115105', '29.383271'], + value: [105.195498, 29.420684], }, ], }, @@ -160,6 +169,18 @@ item = Object.assign(item, _data) }) + const _typeBackArr = _defaultArr.reduce((prev, cur) => { + cur.data?.forEach((item) => { + prev.push({ + type: 'nylx-key', + name: cur.label, + value: item.value, + key: cur.key, + }) + }) + return prev + }, []) + const _seriesData = _defaultArr .filter((item) => item.type === 'dot') .map((e) => { @@ -227,90 +248,54 @@ duration: 100, }, geo: { + show: true, map: 'lcxz', - aspectScale: 0.75, - layoutCenter: ['50%', '50.5%'], - layoutSize: '100%', - silent: true, - roam: false, - z: 0, + roam: true, + zoom: 1, label: { - color: '#fff', - show: false, + emphasis: { + show: false, + }, }, itemStyle: { - areaColor: 'rgba(0, 15, 40, 0.0)', - shadowColor: 'rgba(0, 0, 0, 1)', - shadowBlur: 0, - shadowOffsetX: 0, - shadowOffsetY: 5, - borderColor: '#fff', - borderWidth: 0.1, - }, - emphasis: { - itemStyle: { - areaColor: '#2AB8FF', + normal: { + borderColor: 'rgba(147, 235, 248, 1)', borderWidth: 1, - color: 'green', + areaColor: { + type: 'radial', + x: 0.5, + y: 0.5, + r: 0.8, + colorStops: [ + { + offset: 0, + color: 'rgba(147, 235, 248, 0)', // 0% 处的颜色 + }, + { + offset: 1, + color: 'rgba(147, 235, 248, .2)', // 100% 处的颜色 + }, + ], + globalCoord: false, // 缺省为 false + }, + shadowColor: 'rgba(128, 217, 248, 1)', + // shadowColor: 'rgba(255, 255, 255, 1)', + shadowOffsetX: -2, + shadowOffsetY: 2, + shadowBlur: 10, }, - label: { - show: false, + emphasis: { + areaColor: '#389BB7', + borderWidth: 0, }, }, }, series: [ ..._seriesData, - // { - // type: 'scatter', - // name: '生猪产业分布点', - // coordinateSystem: 'geo', - // tooltip: { - // trigger: 'item', - // show: true, - // }, - // symbol: `image://${PigImg}`, - // symbolSize: [30, 30], - // symbolOffset: [0, 0], - // z: 9999, - // data: [ - // { - // img: `image://${PigImg}`, - // map: '', - // name: '羊', - // value: ['105.2333', '29.2641'], - // }, - // ], - // }, - // { - // type: 'scatter', - // name: '肉羊产业分布点', - // coordinateSystem: 'geo', - // tooltip: { - // trigger: 'item', - // show: true, - // }, - // symbol: `image://${SheepImg}`, - // symbolSize: [30, 30], - // symbolOffset: [0, 0], - // z: 9999, - // data: [ - // { - // img: `image://${SheepImg}`, - // map: '', - // name: '羊', - // value: ['105.2333', '29.2641'], - // }, - // { - // img: `image://${SheepImg}`, - // map: '', - // name: '猪', - // value: ['105.2333', '29.2643'], - // }, - // ], - // }, + { type: 'map', - zoom: 1.1, + zoom: 1, roam: false, map: 'lcxz', name: 'nylx-key', @@ -329,19 +314,63 @@ }, }, itemStyle: { - areaColor: 'rgb(242,230,230 , 0.7)', borderColor: '#fff', borderWidth: 0.1, - }, - itemStyle: { emphasis: { label: { show: false, }, + areaColor: 'rgba(128, 217, 248, 0.2)', + borderWidth: 0, }, }, + data: _data, }, + + { + type: 'scatter', + name: 'nylx-key1', + coordinateSystem: 'geo', + stateAnimation: { + duration: 300, + easing: 'bounceOut', + }, + label: { + show: true, + align: 'center', + formatter: function (params) { + var name = params.name + var text = `{tline|${name}}` + return text + }, + color: '#fff', + rich: { + fline: { + padding: [0, 25], + color: '#fff', + textShadowColor: '#030615', + textShadowOffsetX: 1, + textShadowOffsetY: 1, + fontSize: 14, + fontWeight: 400, + }, + tline: { + padding: [0, 27], + color: '#ABF8FF', + fontSize: 12, + }, + }, + }, + itemStyle: { + color: '#00FFF6', + }, + symbol: img2, + symbolSize: [100, 34], + symbolOffset: [0, -26], + z: 999, + data: _typeBackArr, + }, ], } setOptions(options) @@ -591,7 +620,7 @@ let tempName: any = null - const _seriesName = ['nylx-key', '肉羊产业分布点', '生猪产业分布点'] + const _seriesName = ['nylx-key', 'nylx-key1', '肉羊产业分布点', '生猪产业分布点'] onMounted(async () => { // await getData()