cesium学习(下载,官方案例)

下载cesium源码

  1. 可以从官网直接下载,官网下载的是编译好的。链接: https://www.cesium.com/downloads/
  2. 从github下载源码,方便我们本地调试学习(本文采用这种方式)。链接: https://github.com/CesiumGS/cesium

运行项目

安装依赖

npm i

运行

npm run start

项目一般在8080端口,打开浏览器查看

在这里插入图片描述

Sandcastle是沙盒,包含所有示例,点击查看,源码运行的项目多一个development选项

在这里插入图片描述
Documentation是api文档,不过需要先生成下才能看

npm run build-docs

在这里插入图片描述

集成vue项目

  1. 先创建vue项目,我们使用vue2
  2. npm安装cesium
npm i cesium
  1. 修改webpack配置(主要是copy那几个资源文件)
const { defineConfig } = require("@vue/cli-service");
const NodePolyfillPlugin = require("node-polyfill-webpack-plugin");
const CopyWebpackPlugin = require("copy-webpack-plugin");
const path = require("path");

let cesiumSource = "./node_modules/cesium/Source";
let cesiumWorkers = "../Build/Cesium/Workers";
module.exports = defineConfig({
  transpileDependencies: true,
  configureWebpack: {
    plugins: [
      new NodePolyfillPlugin(),
      new CopyWebpackPlugin({
        patterns: [
          { from: path.join(cesiumSource, cesiumWorkers), to: "Workers" },
          { from: path.join(cesiumSource, "Assets"), to: "Assets" },
          { from: path.join(cesiumSource, "Widgets"), to: "Widgets" },
          {
            from: path.join(cesiumSource, "ThirdParty/Workers"),
            to: "ThirdParty/Workers",
          },
        ],
      }),
    ],
  },
});

  1. main全局导入cesium
import * as Cesium from "cesium";
window.Cesium = Cesium;
import "cesium/Build/Cesium/Widgets/widgets.css";
window.CESIUM_BASE_URL = "/";
  1. helloword案例
<template>
  <div>
    <div id="cesiumContainer" class="fullSize"></div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      viewer: null,
    };
  },
  mounted() {
    this.viewer = new window.Cesium.Viewer("cesiumContainer");
  },
};
</script>

<style lang="scss" scoped></style>

  1. 显示
    在这里插入图片描述
    介绍
    在这里插入图片描述

隐藏初始化后的控件

  1. 方式一: js隐藏
  this.viewer = new window.Cesium.Viewer("cesiumContainer", {
      animation: false, // 左下角动画组件
      baseLayerPicker: false, // 底图组件
      fullscreenButton: false, // 全屏组件
      vrButton: false, // vr模式,默认false
      geocoder: false, // 查找位置组件
      homeButton: false, // 首页组件,点击后回到默认视角
      infoBox: false, // 信息框
      sceneModePicker: false, // 场景切换组件, 3D 2D
      selectionIndicator: false, // 选取指示器组件
      timeline: false, // 时间轴组件
      navigationHelpButton: false, // 帮助提示组件
      navigationInstructionsInitiallyVisible: false, // 如果导航指令最初应该是可见的,则为True;如果在用户明确单击按钮之前不应该显示,则为false。
      scene3DOnly: false, // 如果为true,则每个几何体实例将仅以3D形式渲染,以节省GPU内存。
      skyBox: false, // 天空盒效果
    });
    // 隐藏版权信息
    this.viewer._cesiumWidget._creditContainer.style.display = "none";
  1. 方式二:css隐藏
    这个就是去找对应的class,设置display: none

在这里插入图片描述

官网航班追踪案例

mounted() {
    const viewer = new window.Cesium.Viewer("cesiumContainer", {
      // 地图提供商
      terrainProvider: window.Cesium.createWorldTerrain(),
    });
    // Cesium.createOsmBuildings()用于创建OSM建筑物图层,并加入场景
    viewer.scene.primitives.add(window.Cesium.createOsmBuildings());
    // 飞行轨迹点
    const flightData = JSON.parse(
      '[{"longitude":-122.39053,"latitude":37.61779,"height":-27.32},{"longitude":-122.39035,"latitude":37.61803,"height":-27.32},{"longitude":-122.39019,"latitude":37.61826,"height":-27.32}]'
    );

    const timeStepInSeconds = 30;
    const totalSeconds = timeStepInSeconds * (flightData.length - 1);
    // Cesium.JulianDate.fromIso8601()方法会将ISO 8601格式的时间字符串转换为一个Julian日期对象
    // 该对象包含了该时间的绝对时间值,即距离儒略日(Julian Day)的秒数
    const start = window.Cesium.JulianDate.fromIso8601("2020-03-09T23:10:00Z");
    // Cesium.JulianDate.addSeconds是Cesium.js中用于在Julian日期对象上添加秒数的方法
    const stop = window.Cesium.JulianDate.addSeconds(
      start,
      totalSeconds,
      new window.Cesium.JulianDate()
    );
    // 设置开始,结束,当前时间
    viewer.clock.startTime = start.clone();
    viewer.clock.stopTime = stop.clone();
    viewer.clock.currentTime = start.clone();
    // 时间轴缩放
    viewer.timeline.zoomTo(start, stop);
    // 时间倍数
    viewer.clock.multiplier = 50;
    // 开启动画
    viewer.clock.shouldAnimate = true;

    // 创建一个随时间变化的位置属性
    const positionProperty = new window.Cesium.SampledPositionProperty();
    // 遍历坐标数组
    for (let i = 0; i < flightData.length; i++) {
      const dataPoint = flightData[i];

      // 坐标的时间
      const time = window.Cesium.JulianDate.addSeconds(
        start,
        i * timeStepInSeconds,
        new window.Cesium.JulianDate()
      );
      // 坐标的地点
      const position = window.Cesium.Cartesian3.fromDegrees(
        dataPoint.longitude,
        dataPoint.latitude,
        dataPoint.height
      );
      // 新增采样
      positionProperty.addSample(time, position);
      // 新增实例,点击可查看描述信息
      viewer.entities.add({
        description: `Location: (${dataPoint.longitude}, ${dataPoint.latitude}, ${dataPoint.height})`,
        position: position,
        point: { pixelSize: 10, color: window.Cesium.Color.RED },
      });
    }

    // 追踪
    viewer.trackedEntity = viewer.entities.add({
      // TimeIntervalCollection中包含了多个TimeInterval对象,每个TimeInterval对象描述了一个时间段。
      // TimeInterval对象包含了起始时间和结束时间以及一些额外的属性
      availability: new window.Cesium.TimeIntervalCollection([
        new window.Cesium.TimeInterval({ start: 3, stop: stop }),
      ]),
      position: positionProperty,
      point: { pixelSize: 30, color: window.Cesium.Color.GREEN },
      // 路径图形
      path: new window.Cesium.PathGraphics({ width: 3 }),
    });
  },
### Cesium 下载与安装指南 #### 下载 Cesium 发行包 对于希望快速部署 Cesium 的开发者来说,可以从官方提供的链接直接获取压缩包形式的发行版[^2]。访问 [Cesium 官方下载页面](https://cesium.com/downloads/) 并选择适合操作系统的版本进行下载。 #### 解压并配置环境 解压所下载的文件到目标目录后,在命令行工具中切换至该路径执行如下指令来安装必要的依赖项: ```bash cd cesium npm install ``` 这一步骤会自动拉取所有必需的库文件以便后续开发工作能够顺利开展。 #### 启动本地服务器查看示例 为了验证安装是否成功以及初步了解如何使用 Cesium 构建应用,可以尝试启动内置的服务端脚本展示预置案例: ```bash node server.cjs ``` 此时应该能够在浏览器地址栏输入 `http://localhost:8080/` 来浏览一系列由 Cesium 提供的基础实例。 #### 集成 Vue.js 开发框架 如果计划基于现代前端技术栈构建交互性强的地图应用程序,则可参照以下方式集成 CesiumVue CLI 创建的应用程序内[^3]: ```html <template> <div id="cesiumContainer"></div> </template> <script setup lang="ts"> import { Viewer } from 'cesium'; import { onMounted } from 'vue'; onMounted(() => { const viewer = new Viewer('cesiumContainer'); }); </script> <style scoped> #cesmiumContainer { width: 100%; height: 100vh; } </style> ``` 上述代码片段展示了怎样利用 TypeScript 和 Composition API 将 Cesium 实例挂载在一个指定 ID 的 DOM 节点上,并设置了样式使得地图容器占据整个视口空间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值