| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254 |
- <template>
- <div>
- <div class="mapBg">
- <div class="worldMap" id="worldMap" ref="worldMap" height="300"></div>
- </div>
- <div v-if="dialogVisible" style="background:#fff;left:50%;top:30%;
- position:absolute;z-index:10000;border:1px oslid red;width:50%;height:300px;">
- <h1 align="center">这里是国家地图</h1>
- <button style="margin-top:30%;" @click="dialogVisible=false">关闭</button>
- </diV>
- </div>
- </template>
- <script>
- import * as echarts from 'echarts'
- import mapData from '../utils/map.js'
- var cityData = [{
- name: '长春',
- value: [125.299633, 43.914039, 10],
- }, ]
- var szPoinUrl = "";
- let imgBase64 = ''
- let tempData1 = [{
- name: '环境监测',
- value: [-73.97622, 40.757498],
- ph: 200,
- offset: [70, -58],
- padding: [12, 25, 56, 80],
- imgurl: '',
- }];
- export default {
- mounted() {
- var worldChart = echarts.init(this.$refs["worldMap"]);
- echarts.registerMap('world', mapData.registerMapData);
- worldChart.setOption(this.option);
- worldChart.on("georoam", function (params) {
- var option = worldChart.getOption(); //获得option对象
- if (params.zoom != null && params.zoom != undefined) {
- //捕捉到缩放时
- let mo = option.geo[0].zoom
- option.geo[0].zoom = option.series[0].zoom; //下层geo的缩放等级跟着上层的geo一起改变
- option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
- // // 改变标记点随地图放大缩小
- // // console.log(option.series)
- // let size = option.series[0].zoom/mo
- // if(option.series[0].zoom>mo){
- // // console.log(option.series)
- // option.series[2].symbolSize = [option.series[2].symbolSize[0]*size,option.series[2].symbolSize[1]*size]
- // option.series[1].symbolSize=option.series[1].symbolSize*size
- // option.series[1].label.fontSize=option.series[1].label.fontSize*size
- // }else{
- // option.series[2].symbolSize = [option.series[2].symbolSize[0]*size,option.series[2].symbolSize[1]*size]
- // option.series[1].symbolSize = option.series[1].symbolSize*size
- // option.series[1].label.fontSize = option.series[1].label.fontSize*size
- // }
- // // 改变标记点end
- } else {
- //捕捉到拖曳时
- option.geo[0].center = option.series[0].center; //下层的geo的中心位置随着上层geo一起改变
- }
- // myChart.dispatchAction({ //来用程序主动渲染选框
- // type: "restore",
- // });
- worldChart.setOption(option); //设置option
- });
- //
- worldChart.on('click', params => {
- console.log(111111111111)
- this.dialogVisible = true;
- })
- },
- computed: {
- series() {
- let res = [{
- type: "map",
- roam: true,
- animationDurationUpdate: true,
- label: {
- show: !1,
- },
- tooltip: {
- show: !1,
- },
- itemStyle: {
- normal: {
- borderColor: "#0F6DAC",
- borderWidth: 0.2,
- areaColor: {
- type: "radial",
- x: 0.5,
- y: 0.5,
- r: 0.8,
- colorStops: [{
- offset: 0,
- color: "#061D35", // 0% 处的颜色
- },
- {
- offset: 1,
- color: "#061D35", // 100% 处的颜色
- },
- ],
- globalCoord: true, // 缺省为 false
- },
- },
- emphasis: {
- label: {
- // show: !1,
- color: "#fff",
- },
- areaColor: "#05223D",
- // shadowColor: 'rgb(12,25,50)',
- borderWidth: 0.2,
- },
- },
- aspectScale: 0.65, //长宽比
- zoom: 1.12,
- // roam: false,
- map: "world", //使用
- // data: this.difficultData //热力图数据 不同区域 不同的底色
- }]
- tempData1.forEach(item => {
- res.push({
- type: 'scatter',
- coordinateSystem: 'geo',
- symbol: szPoinUrl,
- symbolSize: [20, 20],
- legendHoverLink: true,
- z: 99999,
- index: 99999,
- label: {
- show: true,
- offset: item.offset, //偏移设置
- fontSize: 14,
- lineHeight: 23,
- backgroundColor: {
- image: item.imgurl,
- },
- borderColor: '#106EAD',
- padding: item.padding,
- formatter(value) {
- return `{name|${value.data.name}\nPH值:${value.data.ph}}`;
- },
- rich: {
- name: {
- fontWeight: 'bold',
- fontSize: 16,
- color: '#fff',
- height: 100,
- }
- },
- color: '#fff',
- },
- data: [item],
- showEffectOn: 'render',
- rippleEffect: {
- brushType: 'stroke',
- },
- hoverAnimation: true,
- zlevel: 9999,
- },
- )
- })
- return res
- },
- option() {
- return {
- // backgroundColor: '#051421',
- backgroundColor: 'transparent',
- tooltip: {
- trigger: "item",
- formatter: function (params, ticket, callback) {
- if (params.seriesType == "effectScatter") {
- return params.marker + params.data.name + "" + params.data.value[2];
- } else if (params.seriesType == "lines") {
- return params.data.fromName + " -> " + params.data.toName + "<br />" + params.data.value;
- } else {
- return params.name;
- }
- },
- },
- grid: {
- right: '8%',
- // top:'5%'
- },
- geo: {
- map: 'world',
- aspectScale: 0.65, //长宽比
- zoom: 1.12,
- show: true,
- tooltip: {
- show: !1,
- },
- scaleLimit: {
- min: 1,
- max: 5,
- },
- label: {
- show: !1,
- },
- animationDurationUpdate: 0,
- roam: true,
- itemStyle: {
- normal: {
- shadowColor: "#164A7C",
- shadowOffsetX: 5,
- shadowOffsetY: 5,
- },
- },
- },
- tooltip: {
- trigger: "item",
- },
- zlevel: 999,
- series: this.series
- }
- }
- },
- data() {
- return {
- dialogVisible: false
- }
- },
- }
- </script>
- <style scoped>
- .worldMap {
- display: inline-block;
- width: 100%;
- height: 100vh;
- background: #051421;
- position: absolute;
- z-index: -1;
- }
- .mapBg {
- /* background: #051421;
- position: absolute;
- z-index: -1; */
- }
- </style>
|