cesium 地形加载

1.效果图:

2.cesium 的基础配置

    //无token会导致球体无法显示
Cesium.Ion.defaultAccessToken ="your token"; // 官网网配置的token
      var viewer = new Cesium.Viewer('cesiumContainer', {
        geocoder: false,//控制地图是否显示一个地理编码(geocoding)控件,允许用户搜索地点并定位到特定位置。
        homeButton: false, //控制是否显示一个回到初始视图的按钮,允许用户快速返回到地图的初始状态
        animation: false, //控制是否显示动画控件,允许用户播放、暂停或者改变时间。
        fullscreenButton: false, //控制是否显示全屏按钮,允许用户切换地图进入或退出全屏模式。
        sceneModePicker: false, //控制是否显示场景模式选择器,允许用户在 2D、3D 和 CV(Columbus View)模式之间切换
        timeline: true, //: 控制是否显示时间轴控件,允许用户在时间上浏览数据。
        navigationHelpButton: false, //控制是否显示导航帮助按钮,提供关于如何使用地图导航控件的帮助信息
        baseLayerPicker: false, // 控制是否显示基础图层选择器,允许用户选择不同的基础图层(如卫星影像、地图等)。
        infoBox: false, //控制是否显示信息框,当用户点击地图上的对象时,会显示与该对象相关的信息。
        scene3DOnly: false, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
        selectionIndicator: false,//控制是否显示选择指示器,用于指示当前选择的地图对象。
        baselLayerPicker: false, //控制是否显示基础图层选择器,允许用户选择不同的基础图层。
      });

3.地形加载及加载完成的监听事件

let terrainProvider = Cesium.createWorldTerrain({ //添加世界地形能看到山脉的高低起伏
        requestVertexNormals: true, //开启地形光照
        requestWaterMask: true, // 开启水面波纹
      });
      viewer.terrainProvider = terrainProvider;
      var lastCameraHeight = 0;
      var heightStableCount = 0;
      var threshold = 5; // 高度稳定的阈值
      var maxStableCount = 30; // 达到稳定的帧数

      function isTerrainProvider() {
        var cameraHeight =
          params.gisMapViewer.camera.positionCartographic.height;
        if (Math.abs(cameraHeight - lastCameraHeight) < threshold) {
          heightStableCount++;
        } else {
          heightStableCount = 0;
        }
        if (heightStableCount >= maxStableCount) {
          console.log("地形加载完成");
          // 在这里执行地形加载完成后的操作
          params.gisMapViewer.scene.preRender.removeEventListener(
            isTerrainProvider
          );
        }

        lastCameraHeight = cameraHeight;
      }

4.完整代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <link href="https://cesium.com/downloads/cesiumjs/releases/1.114/Build/Cesium/Widgets/widgets.css" rel="stylesheet">
  <script src="https://unpkg.com/@turf/turf/turf.min.js"></script>
  <script src="https://cesium.com/downloads/cesiumjs/releases/1.85/Build/Cesium/Cesium.js"></script>
</head>

<body>
  <div id="cesiumContainer"></div>
  <script>
    //无token会导致球体无法显示 
    const mapCreate = async () => {
      Cesium.Ion.defaultAccessToken =
        "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2ZjZlMzAxNS1jY2ZmLTQ0MzctYTE1MS0zNzMxZjhkZjlhYTgiLCJpZCI6MTIyNTg4LCJpYXQiOjE2NzQ5NzMxNTB9.GKIVHIsKN-AWd4vjLOIPm9Fji8tIEvZd5AXf-rTvFk0";
      var viewer = new Cesium.Viewer('cesiumContainer', {
        geocoder: false,//控制地图是否显示一个地理编码(geocoding)控件,允许用户搜索地点并定位到特定位置。
        homeButton: false, //控制是否显示一个回到初始视图的按钮,允许用户快速返回到地图的初始状态
        animation: false, //控制是否显示动画控件,允许用户播放、暂停或者改变时间。
        fullscreenButton: false, //控制是否显示全屏按钮,允许用户切换地图进入或退出全屏模式。
        sceneModePicker: false, //控制是否显示场景模式选择器,允许用户在 2D、3D 和 CV(Columbus View)模式之间切换
        timeline: true, //: 控制是否显示时间轴控件,允许用户在时间上浏览数据。
        navigationHelpButton: false, //控制是否显示导航帮助按钮,提供关于如何使用地图导航控件的帮助信息
        baseLayerPicker: false, // 控制是否显示基础图层选择器,允许用户选择不同的基础图层(如卫星影像、地图等)。
        infoBox: false, //控制是否显示信息框,当用户点击地图上的对象时,会显示与该对象相关的信息。
        scene3DOnly: false, //如果设置为true,则所有几何图形以3D模式绘制以节约GPU资源
        selectionIndicator: false,//控制是否显示选择指示器,用于指示当前选择的地图对象。
        baselLayerPicker: false, //控制是否显示基础图层选择器,允许用户选择不同的基础图层。
      });
      let terrainProvider = Cesium.createWorldTerrain({ //添加世界地形能看到山脉的高低起伏
        requestVertexNormals: true, //开启地形光照
        requestWaterMask: true, // 开启水面波纹
      });
      viewer.terrainProvider = terrainProvider;
      var lastCameraHeight = 0;
      var heightStableCount = 0;
      var threshold = 5; // 高度稳定的阈值
      var maxStableCount = 30; // 达到稳定的帧数

      function isTerrainProvider() {
        var cameraHeight =
          params.gisMapViewer.camera.positionCartographic.height;
        if (Math.abs(cameraHeight - lastCameraHeight) < threshold) {
          heightStableCount++;
        } else {
          heightStableCount = 0;
        }
        if (heightStableCount >= maxStableCount) {
          console.log("地形加载完成");
          // 在这里执行地形加载完成后的操作
          params.gisMapViewer.scene.preRender.removeEventListener(
            isTerrainProvider
          );
        }

        lastCameraHeight = cameraHeight;
      }
      viewer.debugShowFramesPerSecond = true//显示当前的帧率信息,这样你就可以实时观察到地图的渲染性能
      viewer.scene.screenSpaceCameraController.minimumZoomDistance = 1;// 设置了摄像机的最小缩放距离
      viewer.camera.setView({ // 相机视口
        destination: Cesium.Cartesian3.fromDegrees(109.306058, 30.86751, 8000),
        //奉节 坐标
      });

    }
    mapCreate()





  </script>

</body>

</html>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

apexcharts数据可视化之雷达图

apexcharts数据可视化之雷达图 有完整配套的Python后端代码。 本教程主要会介绍如下图形绘制方式&#xff1a; 基础雷达图多组数据雷达图雷达图标记点 基础雷达图 import ApexChart from react-apexcharts;export function BasicRadar() {// 数据序列const series [{name…

香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试(一)

整期笔记索引 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试&#xff08;一&#xff09; 香橙派OrangePi AIpro上手笔记——之USB摄像头目标检测方案测试&#xff08;二&#xff09; Orange Pi AIPro开发板&#xff1a;昇腾AI处理器的强劲性能与广泛应用前景 在…

Java-文件操作

一、创建文件 1.创建文件夹 创建文件夹时&#xff0c;注意两个条件&#xff0c;该路径对应的是否为目录&#xff08;dir&#xff09;&#xff0c;该文件夹是否存在。 File Apathnew File("./文件夹A"); //当前路径文件夹的存储路径if(!Apath.exists() &&am…

Midjourney如何控制光照?提示词灵感来了!

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 Midjourney如何控制光照&#xff1f;提示词灵感来了&#xff01;文章目录 前言总结 前言 Midjourney v6 已经更新好久了&#xff0c;你知道有哪些可以控制光照效果的关键词吗…

为什么宋以前权臣篡位多、宋以后权臣篡位少?

时代不同&#xff0c;主要问题也不同。天下的大气候&#xff0c;自然就要左右王朝的小气候。权臣篡位&#xff0c;得先有权臣。但是&#xff0c;如果当权臣都没有了&#xff0c;又怎么可能有权臣篡位呢&#xff1f;这是一个社会基础的变化。宋以后的主要矛盾是中原和草原的争锋…

Dify快速接入微信

一、Dify简介 项目官网&#xff1a;Dify.AI 生成式 AI 应用创新引擎 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务&#xff08;Backend as Service&#xff09;和 LLMOps 的理念&#xff0c;使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非…

【网络】网络编程套接字

一、知识提及 1.源IP地址和目的IP地址 在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址 2.端口号 端口号(port)是传输层协议的内容. 端口号是一个2字节16位的整数;端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理;IP地址 …

企业文件加密实现数据泄露防护

在数字化时代&#xff0c;数据成为企业最宝贵的资产之一。然而&#xff0c;数据泄露事件频发&#xff0c;给企业带来了巨大的经济损失和声誉风险。为了保护企业的核心利益&#xff0c;实现数据泄露防护&#xff0c;企业必须采取有效的文件加密措施。 一、数据泄露的严重性 数据…

大疆、猛犸、西圣无线麦克风哪个牌子好?大疆、西圣麦克风测评PK

在当今这个全民参与媒体创作的时代&#xff0c;视频分享已经崛起为引领流行文化的关键力量。随着自媒体领域的竞争日益白热化&#xff0c;要想在浩瀚的内容海洋中脱颖而出&#xff0c;创作出卓越的作品无疑是吸引观众目光的核心要素。然而想要成功打造这样的佳作&#xff0c;除…

目标检测——水下物体检测数据集

引言 亲爱的读者们&#xff0c;您是否在寻找某个特定的数据集&#xff0c;用于研究或项目实践&#xff1f;欢迎您在评论区留言&#xff0c;或者通过公众号私信告诉我&#xff0c;您想要的数据集的类型主题。小编会竭尽全力为您寻找&#xff0c;并在找到后第一时间与您分享。 …

[C#]使用C#部署yolov8的目标检测tensorrt模型

【测试通过环境】 win10 x64 vs2019 cuda11.7cudnn8.8.0 TensorRT-8.6.1.6 opencvsharp4.9.0 .NET Framework4.7.2 NVIDIA GeForce RTX 2070 Super 版本和上述环境版本不一样的需要重新编译TensorRtExtern.dll&#xff0c;TensorRtExtern源码地址&#xff1a;TensorRT-CShar…

Epic Pen Pro v3 解锁版安装教程 (屏幕实时标记注释工具)

前言 Epic Pen是一款功能强大的屏幕标记工具&#xff0c;允许您在屏幕上绘图或书写&#xff0c;而无需在后台与软件交互。这意味着您几乎可以注释任何东西&#xff01;使用我们流行的屏幕标记和Windows数字白板工具Epic Pen编写、绘制和突出显示&#xff0c;包括演示文稿软件&…

AlexNet神经网络训练

导包 import tensorflow as tffrom tensorflow.keras import datasets, layers, models 加载Fashion-MNIST数据集 (train_images, train_labels), (test_images, test_labels) datasets.fashion_mnist.load_data() 归一化像素值到[0, 1]区间 train_images, test_images t…

springboot vue 开源 会员收银系统 (3) 会员模块开发

前言 完整版演示 前面我们对会员系统 springboot vue 开源 会员收银系统 (2) 搭建基础框架 进行了脚手件的搭建 下面我们将从会员模块进行开发 在此之前我们先简单梳理一下会员系统的导图 可以看出会员是贯穿全部的 所以我们在此梳理一下会员表的字段 CREATE TABLE business…

决策树算法实战

本实战主要目标是讲解如何使用sklearn库来构造决策树&#xff0c;包括其中的一些参数的使用&#xff0c;以及参数调优对模型精确度的影响。 1. 数据处理 导入Pandas和Matplotlib两个库。 # 导入Pandas和Matplotlib两个库 %matplotlib inline import matplotlib.pyplot as pl…

buuctf_RE

[WMCTF2020]easy_re 简单输入flag 但是下断点后&#xff0c;还没走几步就报错退出了。 确实没有打印的字符串 main函数也看不懂在干嘛 int __cdecl main(int argc, const char **argv, const char **envp) {__int64 v4; // r13char v5; // r12__int64 v6; // rax_QWORD *v7;…

english语法

从句&#xff1a;简单句连词 介词

maven部署到私服

方法一:网页上传 1、账号登录 用户名/密码 2、地址 http://自己的ip:自己的端口/nexus 3、查看Repositories列表&#xff0c;选择Public Repositories&#xff0c;确定待上传jar包不在私服中 4、选择3rd party仓库&#xff0c;点击Artifact Upload页签 5、GAV Definition选…

Aria2下载安装使用

这里写目录标题 下载Aria2 配置创建 aria2.conf 文件创建 aria2.session 文件 Aria2的使用基础使用多源下载多线程下载后台下载配置文件启动 AriaNg下载安装AriaNg配置AriaNg使用 Tracker 列表 aria2 是一款免费开源跨平台且不限速的多线程下载软件&#xff0c;其优点是速度快、…

安全阀检测周期:确定因素与操作流程详解

在工业生产中&#xff0c;安全阀扮演着至关重要的角色&#xff0c;其性能的稳定性和准确性直接关系到设备和系统的安全。为确保安全阀的正常运行和事故防范&#xff0c;对其进行定期检测显得尤为关键。 接下来&#xff0c;佰德将深入探讨安全阀检测周期相关的内容&#xff0c;…