Cesium 实战 - 调整饱和度、对比度等参数,加载夜晚模式

Cesium 实战 - 调整饱和度、对比度等参数,加载夜晚模式

    • 渲染美化影像底图核心代码
    • 完整代码:
    • 在线示例

三维地图夜晚模式一般用于大屏展示以及体现晚上效果。

设置参与跟暗黑模式类似,只是这里加了大气参数。

本文包括渲染美化影像底图核心代码、完整代码以及在线示例。


渲染美化影像底图核心代码

这里放上核心代码:


/**
 * @todo 开启夜晚模式
 * @param {Object} options - 选项参数
 */
function openNightMode(options) {
    options = {
        showGroundAtmosphere: false,
        enableLighting: false,
        atmosphereBrightnessShift: -0.43,
        // 图层亮度
        brightness: 0.3,
        // 大气亮度
        brightnessShift: 0.3,
        ...options
    };

    const scene = viewer.scene;

    // 记录原始值
    origin = {
        showGroundAtmosphere: scene.globe.showGroundAtmosphere,
        enableLighting: scene.globe.enableLighting,
        atmosphereBrightnessShift: scene.globe.atmosphereBrightnessShift,
        brightnessShift: scene.skyAtmosphere.brightnessShift
    };

    // 更新参数配置
    scene.globe.showGroundAtmosphere = options.showGroundAtmosphere;
    scene.globe.enableLighting = options.enableLighting;
    scene.globe.atmosphereBrightnessShift = options.atmosphereBrightnessShift;

    // 获取所有图层
    const imageryLayers = viewer.imageryLayers;

    if (imageryLayers.length > 0) {
        // 这里只设置底图和注记
        const layer = imageryLayers.get(0);
        const layer2 = imageryLayers.length > 1 ? imageryLayers.get(1) : undefined;
        origin.brightnessTile = layer.brightness;
        origin.brightnessLabel = layer2 && layer2.brightness;
        layer.brightness = options.brightness;
        layer2 && (layer2.brightness = options.brightness);
    }
    scene.skyAtmosphere.brightnessShift = options.brightnessShift;

}

完整代码:


<!DOCTYPE html>
<html lang="en">
<head>
    <!-- Use correct character set. -->
    <meta charset="utf-8"/>
    <!-- Tell IE to use the latest, best version. -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
    <!-- Make the application on mobile take up the full browser screen and disable user scaling. -->
    <meta
            name="viewport"
            content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"
    />
    <title>Cesium night mode</title>
    <script src="http://openlayers.vip/examples/csdn/Cesium.js"></script>
    <script src="./cesium_init.js"></script>
    <script src="http://www.openlayers.vip/examples/resources/jquery-3.5.1.min.js"></script>
    <style>
        @import url(./Widgets/widgets.css);

        html,
        body,
        #cesiumContainer {
            width: 100%;
            height: 100%;
            margin: 0;
            padding: 0;
            overflow: hidden;
        }
    </style>

    <script>
        var _hmt = _hmt || [];
        (function () {
            var hm = document.createElement("script");
            hm.src = "https://hm.baidu.com/hm.js?f80a36f14f8a73bb0f82e0fdbcee3058";
            var s = document.getElementsByTagName("script")[0];
            s.parentNode.insertBefore(hm, s);
        })();
    </script>
</head>
<body>
<button id="openNightMode" onClick="openNightMode()">夜晚模式</button>
<button id="closeNightModeFunc" onClick="closeNightMode()">还原</button>

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


    // 创建三维球
    const viewer = init();

    // 美化影像图层
    const imageLayer = viewer.imageryLayers._layers[0];
    // 原始参数
    let origin;

    /**
     * @todo 开启夜晚模式
     * @param {Object} options - 选项参数
     */
    function openNightMode(options) {
        options = {
            showGroundAtmosphere: false,
            enableLighting: false,
            atmosphereBrightnessShift: -0.43,
            // 图层亮度
            brightness: 0.3,
            // 大气亮度
            brightnessShift: 0.3,
            ...options
        };

        const scene = viewer.scene;

        // 记录原始值
        origin = {
            showGroundAtmosphere: scene.globe.showGroundAtmosphere,
            enableLighting: scene.globe.enableLighting,
            atmosphereBrightnessShift: scene.globe.atmosphereBrightnessShift,
            brightnessShift: scene.skyAtmosphere.brightnessShift
        };

        // 更新参数配置
        scene.globe.showGroundAtmosphere = options.showGroundAtmosphere;
        scene.globe.enableLighting = options.enableLighting;
        scene.globe.atmosphereBrightnessShift = options.atmosphereBrightnessShift;

        // 获取所有图层
        const imageryLayers = viewer.imageryLayers;

        if (imageryLayers.length > 0) {
            // 这里只设置底图和注记
            const layer = imageryLayers.get(0);
            const layer2 = imageryLayers.length > 1 ? imageryLayers.get(1) : undefined;
            origin.brightnessTile = layer.brightness;
            origin.brightnessLabel = layer2 && layer2.brightness;
            layer.brightness = options.brightness;
            layer2 && (layer2.brightness = options.brightness);
        }
        scene.skyAtmosphere.brightnessShift = options.brightnessShift;

    }

    /**
     * @todo 关闭夜晚模式
     */
    function closeNightMode() {
        const scene = viewer.scene;

        scene.globe.showGroundAtmosphere = origin.showGroundAtmosphere;
        scene.globe.enableLighting = origin.enableLighting;
        scene.globe.atmosphereBrightnessShift = origin.atmosphereBrightnessShift;
        
        const imageryLayers = viewer.imageryLayers;
        if (imageryLayers.length > 0) {
            const layer = imageryLayers.get(0);
            const layer2 = imageryLayers.get(1);
            layer.brightness = origin.brightnessTile;
            layer2.brightness = origin.brightnessLabel;
        }
        scene.skyAtmosphere.brightnessShift = origin.brightnessShift;
    }

</script>
</body>
</html>


在这里插入图片描述

在线示例

Cesium 在线示例:Cesium 实战 - 调整饱和度、对比度等参数,加载夜晚模式

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

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

相关文章

Leetcode—122.买卖股票的最佳时机II【中等】

2023每日刷题&#xff08;二十八&#xff09; Leetcode—122.买卖股票的最佳时机II 实现代码 int maxProfit(int* prices, int pricesSize) {int totalProfit 0;if(pricesSize < 1) {return 0;}for(int i 1; i < pricesSize; i) {if(prices[i] - prices[i - 1] > …

RabbitMq防止消息丢失

RabbitMq防止消息丢失 消息的传递路径出现消息丢失的位置解决 消息的传递路径 消息发送方 --> MQ --> 消息消费方 出现消息丢失的位置 消息发送方: 消息传输过程中丢失MQ: MQ收到消息后,存在内存中,还未被消费就宕机了,导致数据丢失消息消费方: 消息到达消费方后, 服务…

CentOS 7镜像下载;VMware安装CentOS 7;解决新安装的虚拟机没有网络,无法ping通网络的问题

CentOS 7镜像下载&#xff1b;VMware安装CentOS 8.5&#xff1b;解决新安装的虚拟机没有网络&#xff0c;无法ping通网络的问题 CentOS 8.5镜像下载VMware安装CentOS 7解决新安装的虚拟机没有网络&#xff0c;无法ping通网络的问题写入配置文件 CentOS 8.5镜像下载 阿里提供的…

线程的互斥

目录 线程互斥 线程互斥的背景知识 多线程抢票 多线程抢票加锁 锁的原理 可重入函数与线程安全 常见的线程安全的情况 常见的不可重入情况 常见的可重入情况 总结 线程互斥 线程互斥的背景知识 临界资源&#xff1a;临界资源就是多个执行流共享的资源就叫做临界资源…

idea maven 构建本地jar包及pom文件

1、设置模块build 本地输出路径 <build><defaultGoal>compile</defaultGoal><resources><resource><directory>${basedir}/src/main/resources</directory><includes><include>**/**</include></includes>…

企业年报API:打开企业经营大数据的新视角

引言 随着数字化转型的深入推进&#xff0c;企业年报API作为企业信息化建设中的重要组成部分&#xff0c;受到了越来越多企业和机构的关注和重视。而且&#xff0c;随着中国经济的快速发展&#xff0c;企业年报也成为投资者、监管机构以及相关利益方了解企业经营状况的重要途径…

在以BUF,字节存储区中,存放有n个带符号整数。试编写统计其中负偶数个数(假设≤9)并且显示。

;默认认采用ML6.11汇编程序 DATAS SEGMENT;此处输入数据段代码BUF DB -2,2,3,4,-4N$-BUF DATAS ENDS STACKS SEGMENT;此处处输入堆栈段代码 STACKS ENDS CODES SEGMENTASSUME CS:CODES,DS: DATAS, SS:STACKS START:MOV AX, DATASMOV DS,AXMOV BX,0MOV CX,0 LOP: mov AX,[BX] RO…

成都优优聚美团代运营:打造高效电商运营的利器

一、引人注目的标题 在繁杂的电商市场中&#xff0c;成都优优聚美团代运营以其专业的服务&#xff0c;为商家提供了一站式的解决方案。那么&#xff0c;这个备受瞩目的代运营平台有何特别之处呢&#xff1f;今天&#xff0c;我们就来一探究竟。 二、平台背景与优势 成都优优聚…

微信小程序用户隐私API

用户隐私保护 由于用户隐私保护的政策执行&#xff0c;我们在调用涉及到用户隐私的API时&#xff0c;未更新用户隐私保护协议是无法直接调用的&#xff0c;小程序会默认判断是否更新用户隐私保护 &#xff0c;并根据用户隐私保护中的协议来判断是否可以调用对应的API&#xff…

5个高质量的实用办公软件,每一款都是良心推荐

在现代办公环境中&#xff0c;高效的办公软件可以极大地提升工作效率&#xff0c;简化工作流程&#xff0c;帮助我们更好地完成工作。今天就给大家分享5个高质量的实用办公软件&#xff0c;每一款都是良心推荐。 01、FastStone Capture&#xff08;截图工具&#xff09; FastSt…

安装表面应变计的方法及注意事项

安装表面应变计的方法及注意事项 表面应变计被广泛用于水利工程和混凝土结构中&#xff0c;用于测量埋设点的线性变形&#xff08;应变&#xff09;和应力&#xff0c;同时也可以测量温度。它们可以分为表面安装式和埋入式两种。 一、埋入式表面应变计 1、混凝土应变计的安装…

FAN73832MX 350mA-650mA 高压600V 能驱动MOSFET和IGBT 半桥栅极驱动IC

FAN73832MX是一款半桥、栅极驱动 IC&#xff0c;带关断和可编程死区时间控制功能&#xff0c;能驱动 MOSFET 和 IGBT&#xff0c;工作电压高达 600 V。飞兆的高压工艺和共模噪声消除技术可使高侧驱动器在高 dv/dt 噪声环境下稳定运行。先进的电平转换电路允许高侧驱动器的工作偏…

木柴的舒适:燃木壁炉带来的温暖

火的温暖和光芒一直伴随着我们。如今&#xff0c;虽然电暖和中央暖气等现代供暖方式逐渐普及&#xff0c;但燃木壁炉依然保留了其独特的魅力&#xff0c;成为许多人家居的亮点。 燃木壁炉在寒冷的冬天为您的家带来温暖。燃烧的木柴散发出温暖的光芒和令人陶醉的木材香气&#…

强大好用的shell:shell命令

命令名称&#xff1a;就是语法中的“动词”&#xff0c;表达的是想要做的事情&#xff0c;例如创建用户、查看文件、重启系统等操作。 命令参数&#xff1a;用于对命令进行调整让“修&#xff0c;改”过的命令能更好地贴合工作需求&#xff0c;达到事半功倍的效果。 命令对象&a…

Mysql学习笔记--高级

DQL高级查询 1&#xff0c; [掌握]limit分页查询 语法 select 字段名1,字段名2,… from 表名 limit M, N; M: 整数&#xff0c;表示从第几条索引开始&#xff0c;计算方式:(当前页-1) * 每页显示条数; N: 整数&#xff0c;表示查询多少条数据. 例如&#xff1a;select * from…

网页速度即体验速度:vueSPA(单页应用)首屏加载成就用户心动瞬间

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! ​ 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一…

智能PDU在现代智慧医院机房末端配电系统中的应用分析

随着智慧医院的高速建设和发展&#xff0c;电子计算机及各类通讯设备在医院中广泛应用&#xff0c;医院信息化程度在不断提高&#xff0c;对医院内网、外网、无线网及设备网的稳定运行提出了更高的要求。信息机房作为医院所有网络数据存储交换的中心&#xff0c;它的7x24小时安…

Outlook搜索功能不全

Outlook搜索功能不全 解决方案 1、当打开Outlook想搜索内容&#xff0c;但无法搜索或者搜索不全时。 2、关掉Outlook在桌面上找到此电脑&#xff0c;右键管理 3、进入计算机管理后---服务和应用---服务----找到Windows Search--右键启动或者重新启动即可

(1)(1.14) LightWare SF10/SF11激光雷达

文章目录 前言 1 串行连接 2 I2C 连接 3 参数说明 前言 Lightware SF20 和 LW20 是体积小、测距远&#xff08;100m&#xff09;、精度高的测距仪。有两种型号&#xff0c;LW20/Ser 使用串行接口&#xff0c;LW20/I2C 使用 I2C 接口。 1 串行连接 对于串行连接&#xff0…

泊车功能专题介绍 ———— AVP系统技术要求之地图数据感知要求

文章目录 地图数据规范地图图层和表达要求地图各类数据属性要求SLAM地图要求坐标系数据采集车传感器数据采集数据流程 感知功能要求车端感知功能关键安全感知次要安全感知功能感知体验相关感知 车-场协同感知类型一&#xff1a;引导类型二&#xff1a;重点地段增强类型三&#…