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

news2025/2/11 9:01:31

下载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 }),
    });
  },

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645974.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

八股|ThreadLocal的内存泄露

ThreadLocal是个好用的工具类&#xff0c;但是使用不好是会导致内存泄露的。 内存泄露&#xff1a;之前开辟使用的内存空间&#xff0c;在使用完毕后未释放&#xff0c;结果导致一直占据该内存单元&#xff0c;无法被gc回收&#xff0c;导致该内存单元后续无法被使用&#xff0…

优思学院|质量管理六大思维陷阱【四】:抽样检查是最经济又能保证质量的方法吗?

在质量控制的过程中&#xff0c;一个常见的误解是认为抽样检查是最经济又能保证质量的方法。许多人认为进行百分之百的全数检查既浪费人力又时间不够。因此&#xff0c;他们倾向于采用抽样检查的方法&#xff0c;认为这样既符合经济成本&#xff0c;又能确保产品质量的水准。 …

Java中的死锁和Lock锁

6.死锁 1.死锁的理解&#xff1a; 不同的线程分别占用对方需要的同步资源不放弃&#xff0c;都在等待对方放弃自己需要的同步资源&#xff0c;就形成了线程的死锁 2.说明&#xff1a; 1出现死锁后&#xff0c;不会出现异常&#xff0c;不会出现提示&#xff0c;只是锁的线程…

【小白入门】Verilog实现异步FIFO

之前也在CSDN上面写过两个FIFO相关的文章&#xff0c;不过代码看起来比较复杂&#xff0c;且注释也比较少&#xff0c;不利于新手入门。很多时候都没有耐心继续看下去。 http://t.csdn.cn/0dPX6 http://t.csdn.cn/lYvoY 因为自己本身是一个初学者&#xff0c;就从初学者的视…

交换排序——冒泡排序和快速排序

一、交换排序的基本思想 1、两两比较&#xff0c;如果发生逆序则交换&#xff0c;直到所有记录都排好序为止。 2、常见的交换排序方法&#xff1a;冒泡排序和快速排序 3、最简单的交换排序——简单选择排序算法描述 void SelectSort(SqList &K) {for (i1; i<L.lengt…

浅谈C++和Java中对象的等号赋值

随着对C学习的深入&#xff0c;发现了一些和Java在设计思想上有所不同的地方。其一就是对象的拷贝赋值。 在Java中&#xff0c;如果定义了两个对象s1和s2&#xff0c;在堆内存中将会创建两个对象实体。那么s1 s2;表示s1指向的对象发生改变&#xff0c;即指向了s2所指向的对象…

8分钟让你完全掌握代理IP基础知识和实际应用

概念 代理IP可以理解为一个中转服务器&#xff0c;将用户和目标服务器之间的请求和响应进行转发和代理。使用代理IP的主要目的是隐藏用户的真实IP地址、访问被限制的内容、提高网络连接速度和保护用户隐私。 目录 概念 一、代理IP的工作原理 二、代理IP的类型 三、为什么…

总结的太到位:python 多线程系列详解

前言&#xff1a; 上vip课的时候每次讲到框架的执行&#xff0c;就会有好学的同学问用多线程怎么执行&#xff0c;然后我每次都会说在测开课程会详细讲解&#xff0c;这并不是套路&#xff0c;因为如果你不理解多线程&#xff0c;不清楚什么时候该用什么时候不该用&#xff0c;…

Clean架构与MVVM:助你打造优质Android应用

Android应用程序开发可能具有挑战性&#xff0c;特别是在创建可扩展和可维护的代码以适应不断变化的需求和用户需求方面。为了解决这个挑战&#xff0c;开发者通常依赖于软件架构模式&#xff0c;为代码组织和关注点分离提供了坚实的基础。在Android开发中&#xff0c;两种流行…

7-基于51单片机的金属探测器检测金属报警器设计(源程序+原理图+PCB+论文)全套资料

编号: 0007 本系统采用单片机1602液晶按键比较器蜂鸣器发光二极管组合而成。 按键说明: 加键、减键。单独一个按键为复位按键 1.单片机型号: STC89C52/51、AT89C52/51、AT89S52/51 可任选&#xff0c;程序通用2.产品自带单片机上电复位电路、手动复位电路(复位按键)、晶振电路(…

Unity入门8——音效系统

一、音频文件参数面板 Force To Mono&#xff1a;多声道转单声道 Normalize&#xff1a;强制为单声道时&#xff0c;混合过程中被标准化 Load In Background&#xff1a;后台加载&#xff0c;不阻塞主线程&#xff0c;适合大音效 Ambisonic&#xff1a;立体混响声 非常适合 36…

Java数据结构之第十六章、并查集

一、并查集原理 在一些应用问题中&#xff0c;需要将n个不同的元素划分成一些不相交的集合。开始时&#xff0c;每个元素自成一个单元素集合&#xff0c;然后按一定的规律将归于同一组元素的集合合并。在此过程中要反复用到查询某一个元素归属于那个集合的运算。适合于描述这类…

【CSDN铁粉】(获取铁粉的终极秘诀)

目录 铁粉和普通粉丝有什么区别什么是CSDN中的铁粉CSDN铁粉的用处如何获得更多的铁粉如何吸引更多的铁粉总结 目录) 铁粉和普通粉丝有什么区别 在CSDN社区中&#xff0c;铁粉和普通粉丝是两个不同的等级。铁粉是指对某个特定领域或某个专业人士非常崇拜和追随的用户&#xff0…

leetcode:1822. 数组元素积的符号(python3解法)

难度&#xff1a;简单 已知函数 signFunc(x) 将会根据 x 的正负返回特定值&#xff1a; 如果 x 是正数&#xff0c;返回 1 。如果 x 是负数&#xff0c;返回 -1 。如果 x 是等于 0 &#xff0c;返回 0 。 给你一个整数数组 nums 。令 product 为数组 nums 中所有元素值的乘积。…

Compose Desktop 实战 宝可梦图鉴

Compose Desktop 实战 宝可梦图鉴 前言 阅读本文需要一定compose基础&#xff0c;如果没有请移步Jetpack Compose入门详解&#xff08;实时更新&#xff09; 接口数据来源于pokeapi 项目源代码 如果你觉得不错&#xff0c;请给我一个star&#xff0c;THKS 实现效果 闲话不…

unity制作捕鱼达人

文章目录 介绍制作水波特效制作多种ui制作不同种类鱼的动画鱼的多种移动效果制作鱼的生成点多种炮台多种子弹多种网游戏控制器声音控制器游戏存档游戏开始 介绍 水波荡漾的特效 鱼有多种运动轨迹 每隔一段时间自动收集金币 可以切换不同的炮台 升级后有不同的特效 捕捉到普通鱼…

Salesforce开发人员如何利用生成式AI?

AI浪潮来袭&#xff0c;技术和产品的新消息奔涌而来&#xff0c;开发者们的工作模式正在经历巨变。ChatGPT的出现&#xff0c;让问题的解法更有想象力&#xff0c;也让敲下一行代码、发布一款产品变得更容易。 AI可以帮助指导开发过程中的错误&#xff0c;并改进解决方案&…

ChatGPT/InstructGPT详解

前言 GPT系列是OpenAI的一系列预训练文章&#xff0c;GPT的全称是Generative Pre-Trained Transformer&#xff0c;顾名思义&#xff0c;GPT的目的就是通过Transformer为基础模型&#xff0c;使用预训练技术得到通用的文本模型。目前已经公布论文的有文本预训练GPT-1&#xff…

【iM群发部署,苹果推是什么】苹果日历推,配置 iOS 设备:您可以创建自定义配置文件

Apple Configurator 是苹果官方提供的一款工具&#xff0c;主要面向企业和教育机构&#xff0c;用于集中管理和配置多个 iOS 设备。 使用 Apple Configurator&#xff0c;您可以在 PC 端进行以下操作&#xff1a; 配置 iOS 设备&#xff1a;您可以创建自定义配置文件&#xf…

经典文献阅读之--A Review of Motion Planning(轨迹规划回顾)

0. 简介 对于自动驾驶以及机器人而言&#xff0c;除了SLAM以外&#xff0c;另一个比较重要的部分就是轨迹规划了。而最近作者看到了几篇比较好的文章&#xff0c;分别为《A Review of Motion Planning Techniques for Automated Vehicle》、《A review of motion planning alg…