vue+echarts实现3d地图——引入3d地图,加点,加点击事件

本文介绍了如何使用ECharts将JSON文件转换为地图,并添加交互功能。首先,下载并重命名JSON文件,然后通过ECharts的registerMap方法注册地图。接着,在Vue组件中引入地图并设置地图样式,包括缩放、颜色等。在mounted阶段初始化ECharts实例,结合接口数据动态展示散点。最后,为散点添加点击事件监听。这是一个简单的ECharts地图可视化的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
先看效果图:
在这里插入图片描述
1,获取相当于的json文件,推荐一个获取各个市县的json文件地址点击前往
将下载好的josn文件重命名,简短点.
一共就三个文件
第一个就是json文件,

第二个是myMap.js

(function(root, factory) {
  if (typeof define === 'function' && define.amd) {
    // AMD. Register as an anonymous module.
    define(['exports', 'echarts'], factory);
  } else if (typeof exports === 'object' && typeof exports.nodeName !== 'string') {
    // CommonJS
    factory(exports, require('echarts'));
  } else {
    // Browser globals
    factory({}, root.echarts);
  }
})(this, function(exports, echarts) {
  var log = function(msg) {
    if (typeof console !== 'undefined') {
      console && console.error && console.error(msg);
    }
  };
  if (!echarts) {
    log('ECharts is not Loaded');
    return;
  }
  if (!echarts.registerMap) {
    log('ECharts Map is not loaded');
    return;
  }

  // 获取地图数据,这个json就刚刚下载的那个json文件
  let json = require('./shenzhen.json');
  
  // 注册地图,第一个参数就是最后一个文件里面相应的的参数
  echarts.registerMap('广东深圳', json);
});

第三个文件,组件页面

<template>
   <div id="myMap"></div>
</template>
import '@/util/myMap.js'; //引入注册地图的js
let myChartMap = null;//地图
export default {
	data() {
		return {
			optionMap:{
				geo: {
				map: '广东深圳',
				roam: true,
				zoom: 1.2,
				scaleLimit: {  //缩放级别限制
					min: 1,
					// max: 12
				},
				aspectScale: 1.1, //地图的长宽比
				itemStyle: {
					borderWidth: 2,
					borderColor: '#0090fe', //边框颜色
					areaColor: '#003399', //地图区域颜色
					shadowColor: '#182f68',
					shadowOffsetX: 0,
					shadowOffsetY: 15
				},
				label: {
					color: '#fff',
					fontWeight: 'bold',
					show: true,
				},
				emphasis: {
					itemStyle: {
						show: 'true',
						borderWidth: 4,
						borderColor: '#b2163c', //边框颜色
						areaColor: '#531f67', //鼠标移上去的颜色
					},
					label: {
						color: '#fff',
						fontWeight: 'bold',
						show: true,
					}
				},
			  },
		      series: [{
		          type: 'scatter',
		          coordinateSystem: 'geo',
		          data:[],
		          symbolSize: '20',
		          symbol: 'circle',
		          itemStyle: { color: "orange"}
		       }],
			}
		}
	},
	methods:{
	  secaorange() {
  		myChartMap = echarts.init(document.getElementById('myMap'));
	    myChartMap.setOption(this.optionMap);
		window.addEventListener("resize",()=> {
			myChartMap.resize();
		});
      }
    },
    mounted(){
		this.secaorange()
	}
}

到这就可以成功引入地图了,下面进行其他需求
加点
函数里面改下就可以了,调接口获取[{}]格式的数据进行处理

    secaorange() {
      myChartMap = echarts.init(document.getElementById('myMap'));
      organizationQueryWithPage().then(data=>{
        var dataObj = {}
        data.result.records.map(v=>{
          dataObj = {
            name:v.name,
            value:[Number(v.longitude),Number(v.latitude),v.id],
          }
          this.optionMap.series[0].data.push(dataObj);
        })
        this.optionMap.series[0].data = JSON.parse(JSON.stringify(this.optionMap.series[0].data))
        window.addEventListener("resize",()=> {
          myChartMap.resize();
        });
        myChartMap.setOption(this.optionMap);
      })
    },

给点添加点击事件
添加一个click就可以了.

myChartMap.on('click', (data) => {
	// console.log(data);
});

📢没了,结束了,是不是很简单呐,如有问题,欢迎留言。
📢如果此篇博文对您有帮助,还请动动小手点赞 👍 收藏 ⭐留言 📝呐~,谢谢 ~ ~

有限差分法是一种数值解法,用于求解偏微分方程。在地震学中,有限差分法经常被用来模拟地震波在地球内部的传播过程。 在matlab中绘制0-100km内地震一维波动传播动图,可以按照以下步骤进行: 1. 定义模拟区域:在这个问题中,我们需要模拟地震波在0-100km深度范围内的传播。因此,我们需要定义深度轴,可以使用`z = linspace(0,100,101)`来定义深度轴,其中`linspace`函数用于生成等间隔的向量。 2. 定义时间轴:地震波在地球内部的传播速度是有限的,因此我们需要将时间轴定义为足够长的一段时间,以确保模拟的波形可以完全传播。可以使用`dt = 0.001`和`t = 0:dt:2`来定义时间轴,其中`dt`为时间步长,`t`为时间轴向量。 3. 定义初始波形:地震波通常是由一个初始波源产生的,我们需要定义一个初始波形。在这个问题中,我们可以使用高斯脉冲作为初始波形。可以使用以下代码生成高斯脉冲: ``` fc = 20; % 高斯脉冲中心频率 t0 = 0.05; % 高斯脉冲宽度 f = exp(-pi^2 * (fc.*(t-t0)).^2); % 高斯脉冲 ``` 4. 定义速度模型:地震波在地球内部的传播速度是不均匀的,因此我们需要定义一个速度模型。在这个问题中,我们可以使用一个简单的速度模型,即在模拟区域内速度是常数。可以使用以下代码定义速度模型: ``` vp = 6000; % 模拟区域内速度常数 ``` 5. 使用有限差分法进行波动传播模拟:有限差分法的基本思想是将偏微分方程转化为差分方程,然后使用数值方法求解差分方程。在这个问题中,我们需要使用有限差分法模拟地震波在地球内部的传播过程。可以使用以下代码进行模拟: ``` dx = 1; % 空间步长 dt = 0.001; % 时间步长 vp = 6000; % 模拟区域内速度常数 r = vp*dt/dx; % Courant数 f = exp(-pi^2 * (fc.*(t-t0)).^2); % 高斯脉冲 u = zeros(length(z),length(t)); % 初始化波场矩阵 u(:,1) = f; % 初始波形 for k = 2:length(t) u(2:end-1,k) = 2*u(2:end-1,k-1) - u(2:end-1,k-2) + r^2*(u(3:end,k-1) - 2*u(2:end-1,k-1) + u(1:end-2,k-1)); end ``` 6. 绘制动图:使用`surf`函数绘制地震波在地球内部的传播过程。可以使用以下代码绘制动图: ``` for k = 1:length(t) surf(t(1:k),z,u(:,1:k)','EdgeColor','none'); axis([0 2 0 100 -1 1]); view(2); drawnow; end ``` 在这段代码中,`surf`函数用于绘制三维图形,`view(2)`用于将图形投影到二维平面,`drawnow`用于立即绘制图形。 坐标物理量解释如下: - 深度轴z:表示地震波传播的深度,单位为千米。 - 时间轴t:表示地震波传播的时间,单位为秒。 - 波场矩阵u:表示地震波在深度和时间上的分布情况,单位为位移或压力。
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨同学*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值