Vue加载三维地球Cesium

首先和加载天地图一样,还是需要在Cesium官网注册个账号 ,需要token才可以加载三维地球。如果不想申请账号,在官网例子中有个token也可以直接拿来用。

Ion.defaultAccessToken = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlODhhYTdhMC1lZmE3LTQzYzQtODY2MS01MDI0ZjQ3Y2EzMjYiLCJpZCI6MTg2NzI4LCJpYXQiOjE3MDM3MzEzMzV9.yki8P_tt3utNV9imqphGEvR0NIJi0mUr5elAnZ6YavE';

npm安装cesium js包

npm install cesium

在Vue中引入Cesium依赖包

import { Cartesian3, Ion, Terrain, Viewer } from "cesium";
import "cesium/Build/Cesium/Widgets/widgets.css";

在mounted方法中设置token,初始化三维地球并定义初始位置等信息。

<template>
  <div
    id="earthDiv"
    style="width: 880px; height: 600px; margin-right: 10px"
  ></div>
</template>

<script>
import { Cartesian3, Ion, Terrain, Viewer } from "cesium";
import "cesium/Build/Cesium/Widgets/widgets.css";

export default {
  name: "HelloWorld",
  props: {
    msg: String,
  },
  mounted() {
    Ion.defaultAccessToken =
      "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJlODhhYTdhMC1lZmE3LTQzYzQtODY2MS01MDI0ZjQ3Y2EzMjYiLCJpZCI6MTg2NzI4LCJpYXQiOjE3MDM3MzEzMzV9.yki8P_tt3utNV9imqphGEvR0NIJi0mUr5elAnZ6YavE";
    const viewer = new Viewer("earthDiv", {
      terrain: Terrain.fromWorldTerrain(),
    });
    viewer.camera.flyTo({
      destination: Cartesian3.fromDegrees(108.93, 34.26, 8000),//经纬度,高度
      duration: 10,//镜头飞到指定位置的时间(秒)
    });
  },
};
</script>

 从Vue项目文件夹中的\node_modules\cesium\Build\Cesium路径下找到下面这四个文件夹,Copy到Vue项目中。

 

在App.vue中定义一个全局变量“window.CESIUM_BASE_URL”指向上面这四个文件夹的存放位置,我这里放到了cesium文件夹下,所以就写上“/cesium/”,不需要加前面的“public”。

window.CESIUM_BASE_URL = "/cesium/";

 运行npm  run serve启动项目,发现报了这个错误。

ERROR in ./node_modules/@cesium/engine/Source/Core/Resource.js 1874:57-71
Module not found: Error: Can't resolve 'http' in 'D:\xxxx\xxxx\node_modules\@cesium\engine\Source\Core'

BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default.
This is no longer the case. Verify if you need this module and configure a polyfill for it.

If you want to include a polyfill, you need to:
        - add a fallback 'resolve.fallback: { "http": require.resolve("stream-http") }'
        - install 'stream-http'
If you don't want to include a polyfill, you can use an empty module like this:
        resolve.fallback: { "http": false }

解决方法是需要安装node-polyfill-webpack-plugin,在vue.config.js中添加以下配置。

npm install node-polyfill-webpack-plugin
const { defineConfig } = require('@vue/cli-service')
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin");

module.exports = defineConfig({
  transpileDependencies: true, 
  configureWebpack: {
    plugins: [new NodePolyfillPlugin()],
  }
})

这样我们再运行npm run serve启动项目,三维地球即可成功加载,并在设定时间内慢慢飞向指定位置。

 

 

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Vue3项目中加载gltf模型到Cesium地球,您需要进行以下步骤: 1. 首先,在Vue项目中安装Cesium库。您可以使用 npm 命令来安装它:npm install cesium 2. 打开 Vue 项目的入口文件(比如 main.js),并在顶部导入 Cesium 库。在这之前,确保在项目的 public/index.html 文件中引入了 Cesium 的静态资源,以便正确加载 Cesium 的依赖。 3. 创建一个 Cesium 的实例,这样您可以在项目中使用它。您可以在 Vue 组件中的 mounted 钩子函数中进行这个步骤。创建一个 div 元素,并为其设置一个唯一的 id 属性,这个 div 元素将用于显示 Cesium 地球。 4. 在 mounted 钩子函数中,使用 Cesium 的 Viewer 类来创建一个地图视图。将要加载模型的场景地球放入到之前创建的 div 元素中。您可以设置地图视图的一些属性,例如初始视角、瓦片地图的地址等等。 5. 使用 Cesium 的 Entity 类来创建一个实体对象,用于表示要加载的 gltf 模型。您可以设置模型的位置、方向、缩放等属性。 6. 使用 Cesium 的 Scene 类的方法来加载 gltf 模型。您可以使用 load 方法来加载 gltf 文件,然后将其添加到场景中。 7. 配置视图的更新循环以确保地球视图不断更新,以呈现 gltf 模型以及其他地球上的实体。 8. 最后,您可以在 Vue 组件的模板中使用之前创建的 div 元素来显示 Cesium 地球。 请注意,上述步骤是一个大致的指南。在实际项目中,您可能需要根据具体需求进行一些调整和配置。此外,还可以利用 VueCesium 提供的其他功能和组件来增强您的项目。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

biu啊biu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值