柿子树备忘录

vuePress-theme-reco 柿子树    2023
柿子树备忘录

Choose mode

  • dark
  • auto
  • light
首页
个人笔记
  • Web
  • GIS
  • Database
  • DevOps
  • 可视化
地图故事
生活点滴
归档
关于我
author-avatar

柿子树

109

Article

73

Tag

首页
个人笔记
  • Web
  • GIS
  • Database
  • DevOps
  • 可视化
地图故事
生活点滴
归档
关于我
  • GIS理论基础

    • GIS基础知识
    • 地图坐标系统
  • GeoServer笔记

    • 思维导图
    • 一、OGC简述

    • 二、基本使用

    • 三、服务标准

    • 四、图层加载

    • 五、服务端开发

  • Openlayers

    • 思维导图
    • 一、快速起步

    • 二、ol结构体系

    • 三、数据源加载

    • 四、常用控件

    • 五、几何对象与Style样式

    • 六、事件交互

    • 七、OGC服务

    • 八、常用示例

  • CesiumJS

    • 思维导图
  • WorldWind

    • WorldWindJava 学习笔记
    • OpenGL中的坐标系

使用npm方式(vue-cli)

vuePress-theme-reco 柿子树    2023

使用npm方式(vue-cli)

ac 2022-01-14 CesiumJS

在vue项目中使用npm的方式安装cesium

# 1. 创建vue项目

//安装vue-cli脚手架
npm install -g @vue/cli

//创建learning-cesium项目
vue create learning-cesium
1
2
3
4
5

# 2. 安装Cesium

npm i cesium
1

# 3. 配置Cesium

先将下列资源拷贝一份到 public 文件下。

  • node_modules/cesium/Build/Cesium/Workers
  • node_modules/cesium/Build/Cesium/ThirdParty
  • node_modules/cesium/Build/Cesium/Assets
  • node_modules/cesium/Build/Cesium/Widgets

这里为了方便管理,新建了一个名为cesiumjs的文件夹,用于存放上面的资源:

image-20220729153732517

在入口文件 main.js 中配置cesium的静态资源路径:

import Vue from 'vue'
import App from './App.vue'
import 'cesium/Build/Cesium/Widgets/widgets.css'

Vue.config.productionTip = false
window.CESIUM_BASE_URL = '/cesiumjs'

new Vue({
  render: h => h(App)
}).$mount('#app')
1
2
3
4
5
6
7
8
9
10

在 components文件夹下创建 CesiumView.vue组件:

<template>
  <div id="cesiumContainer"></div>
</template>

<script>
import * as Cesium from 'cesium'
export default {
  methods: {
    initCesium () {
      Cesium.Ion.defaultAccessToken = 'your_access_token'

      // Initialize the Cesium Viewer in the HTML element with the "cesiumContainer" ID.
      const viewer = new Cesium.Viewer('cesiumContainer', {
        terrainProvider: Cesium.createWorldTerrain()
      })

      // Fly the camera to San Francisco at the given longitude, latitude, and height.
      viewer.camera.flyTo({
        destination: Cesium.Cartesian3.fromDegrees(-122.4175, 37.655, 400),
        orientation: {
          heading: Cesium.Math.toRadians(0.0),
          pitch: Cesium.Math.toRadians(-15.0)
        }
      })
    }
  },
  mounted () {
    this.initCesium()
  }
}
</script>
<style scoped></style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

在App.vue组件中将helloWorld.vue组件去掉,换成 CesiumView.vue 组件。

<template>
  <div id="app">
    <!-- <img alt="Vue logo" src="./assets/logo.png"> -->
    <!-- <HelloWorld msg="Welcome to Your Vue.js App"/> -->
    <CesiumView></CesiumView>
  </div>
</template>

<script>
// import HelloWorld from './components/HelloWorld.vue'
import CesiumView from '@/components/CesiumView.vue'
export default {
  name: 'App',
  components: {
    // HelloWorld,
    CesiumView
  }
}
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

# 4.遇到的问题

  • Ceisum的样式文件引入失败。Module not found: Error: Package path ./Build/Cesium/Widgets/widgets.css is not exported from package

    解决方法:

    1、选择直接在项目的index.html中采用link标签引入

    <link rel="stylesheet" href="<%= BASE_URL %>cesiumjs/Widgets/widgets.css"/>
    
    1