mapbox使用v3版本,v2的样式切换不同时间段

  1. 创建DayAndNight.js

    /**
     * 使用方式
     * const dayNight = new DayAndNight({ map: map // map 地图对象}) 
     * 修改类型
     * dayNight.setConfigProperty(value)
     */
    class DayAndNight {
      constructor (sdMap) {
        this.map = sdMap.map
    
        this.initStyle()
      }
    
      // 初始化时添加必要样式
      initStyle () {
        const map = this.map
    
        // 添加一个方向灯
        map.setLights([
          {
            "id": "ambient",
            "type": "ambient",
            "properties": {
              "color": [
                "match",
                [
                  "config",
                  "lightPreset"
                ],
                "dawn",
                "hsl(28, 98%, 93%)",
                "day",
                "hsl(0, 0%, 100%)",
                "dusk",
                "hsl(228, 27%, 29%)",
                "night",
                "hsl(217, 100%, 11%)",
                "hsl(0, 0%, 100%)"
              ],
              "intensity": [
                "match",
                [
                  "config",
                  "lightPreset"
                ],
                "dawn",
                0.75,
                "day",
                0.8,
                "dusk",
                0.8,
                "night",
                0.5,
                0.8
              ]
            }
          },
          {
            "id": "directional",
            "type": "directional",
            "properties": {
              "direction": [
                "match",
                [
                  "config",
                  "lightPreset"
                ],
                "dawn",
                [
                  "literal",
                  [
                    120,
                    50
                  ]
                ],
                "day",
                [
                  "literal",
                  [
                    180,
                    20
                  ]
                ],
                "dusk",
                [
                  "literal",
                  [
                    240,
                    80
                  ]
                ],
                "night",
                [
                  "literal",
                  [
                    270,
                    20
                  ]
                ],
                [
                  "literal",
                  [
                    180,
                    20
                  ]
                ]
              ],
              "color": [
                "match",
                [
                  "config",
                  "lightPreset"
                ],
                "dawn",
                "hsl(33, 98%, 77%)",
                "day",
                "hsl(0, 0%, 100%)",
                "dusk",
                "hsl(30, 98%, 76%)",
                "night",
                "hsl(0, 0%, 29%)",
                "hsl(0, 0%, 100%)"
              ],
              "intensity": [
                "interpolate",
                [
                  "linear"
                ],
                [
                  "zoom"
                ],
                12,
                [
                  "match",
                  [
                    "config",
                    "lightPreset"
                  ],
                  "dawn",
                  0.5,
                  "day",
                  0.2,
                  "dusk",
                  0,
                  "night",
                  0,
                  0.2
                ],
                14,
                [
                  "match",
                  [
                    "config",
                    "lightPreset"
                  ],
                  "dawn",
                  0.5,
                  "day",
                  0.2,
                  "dusk",
                  0.2,
                  "night",
                  0.5,
                  0.2
                ]
              ],
              "cast-shadows": true,
              "shadow-intensity": [
                "match",
                [
                  "config",
                  "lightPreset"
                ],
                "night",
                0.5,
                1
              ]
            }
          }
        ]);
        // 添加雾
        map.setFog({
          "vertical-range": [
            30,
            120
          ],
          "range": [
            "interpolate",
            [
              "linear"
            ],
            [
              "zoom"
            ],
            13,
            [
              "literal",
              [
                1,
                10
              ]
            ],
            15,
            [
              "literal",
              [
                1,
                4
              ]
            ]
          ],
          "color": [
            "interpolate",
            [
              "exponential",
              1.2
            ],
            [
              "zoom"
            ],
            5,
            [
              "interpolate",
              [
                "linear"
              ],
              [
                "measure-light",
                "brightness"
              ],
              0.1,
              "hsla(240, 9%, 55%, 1)",
              0.4,
              "hsla(0, 0%, 100%, 1)"
            ],
            7,
            [
              "interpolate",
              [
                "linear"
              ],
              [
                "measure-light",
                "brightness"
              ],
              0.02,
              "hsla(213, 63%, 20%, 0.9)",
              0.03,
              "hsla(30, 65%, 60%, 0.5)",
              0.4,
              "hsla(10, 79%, 88%, 0.95)",
              0.45,
              "hsla(200, 60%, 98%, 0.9)"
            ]
          ],
          "high-color": [
            "interpolate",
            [
              "exponential",
              1.2
            ],
            [
              "zoom"
            ],
            5,
            [
              "interpolate",
              [
                "linear"
              ],
              [
                "measure-light",
                "brightness"
              ],
              0.1,
              "hsla(215, 100%, 20%, 1)",
              0.4,
              "hsla(215, 100%, 51%, 1)"
            ],
            7,
            [
              "interpolate",
              [
                "linear"
              ],
              [
                "measure-light",
                "brightness"
              ],
              0,
              "hsla(228, 38%, 20%, 1)",
              0.05,
              "hsla(360, 100%, 85%, 1)",
              0.2,
              "hsla(205, 88%, 86%, 1)",
              0.4,
              "hsla(270, 65%, 85%, 1)",
              0.45,
              "hsla(0, 0%, 100%, 1)"
            ]
          ],
          "space-color": [
            "interpolate",
            [
              "exponential",
              1.2
            ],
            [
              "zoom"
            ],
            5,
            "hsl(211, 84%, 9%)",
            7,
            [
              "interpolate",
              [
                "linear"
              ],
              [
                "measure-light",
                "brightness"
              ],
              0,
              "hsl(211, 84%, 17%)",
              0.2,
              "hsl(210, 40%, 30%)",
              0.4,
              "hsl(270, 45%, 98%)",
              0.45,
              "hsl(210, 100%, 80%)"
            ]
          ],
          "horizon-blend": [
            "interpolate",
            [
              "exponential",
              1.2
            ],
            [
              "zoom"
            ],
            5,
            0.01,
            7,
            [
              "interpolate",
              [
                "exponential",
                1.2
              ],
              [
                "measure-light",
                "brightness"
              ],
              0.35,
              0.03,
              0.4,
              0.1,
              0.45,
              0.03
            ]
          ],
          "star-intensity": [
            "interpolate",
            [
              "exponential",
              1.2
            ],
            [
              "zoom"
            ],
            5,
            0.4,
            7,
            [
              "interpolate",
              [
                "exponential",
                1.2
              ],
              [
                "measure-light",
                "brightness"
              ],
              0.1,
              0.2,
              0.3,
              0
            ]
          ]
        });
        // 修改相机类型
        map.setCamera({
          "camera-projection": "orthographic", // perspective 默认
        });
        // 默认白天
        map.setConfigProperty('', 'lightPreset', "day")
      }
    
      /**
       * 修改
       * @param {*} value 
       * day    白天
       * night  夜晚
       * dawn   破晓
       * dusk   黄昏
       */
      setConfigProperty(value){
        const map = this.map
    
        map.setConfigProperty('', 'lightPreset', value);
      }
    }
    
  2. 使用

    <!DOCTYPE html>
    <html lang="zh-CN">
    
    <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>
      <script src='https://api.mapbox.com/mapbox-gl-js/v3.0.0/mapbox-gl.js'></script>
      <link href='https://api.mapbox.com/mapbox-gl-js/v3.0.0/mapbox-gl.css' rel='stylesheet' />
      <style>
        body {
          margin: 0;
          padding: 0;
        }
    
        #map {
          position: absolute;
          top: 0;
          bottom: 0;
          width: 100%;
        }
    
        #menu {
          position: absolute;
          background: #efefef;
          padding: 10px;
          font-family: 'Open Sans', sans-serif;
          top: 10px;
          left: 10px;
        }
    
        .map-ctrl-zoom {
          color: #a4a4a4;
          font-weight: bold;
          padding: 4px 8px;
          user-select: none;
          background: rgb(28, 31, 36);
          margin: 10px 10px 0 0;
        }
    
        .mapboxgl-ctrl-logo {
          display: none !important;
        }
        #custom-scale {
          position: absolute;
          bottom: 10px;
          left: 10px;
          background-color: rgba(255, 255, 255, 0.8);
          padding: 5px 10px;
          border-radius: 3px;
          font-size: 12px;
          font-family: Arial, sans-serif;
        }
      </style>
    </head>
    
    <body>
      <div id='map'></div>
      <div id="menu">
        <input id="day" type="radio" name="rtoggle" value="day" checked="checked">
        <label for="day">白天</label>
        <input id="night" type="radio" name="rtoggle" value="night">
        <label for="night">夜晚</label>
        <input id="dawn" type="radio" name="rtoggle" value="dawn">
        <label for="dawn">破晓</label>
        <input id="dusk" type="radio" name="rtoggle" value="dusk">
        <label for="dusk">黄昏</label>
      </div>
      <div id='custom-scale'></div>
    </body>
    
    
    <script src="./js/DayAndNight.js"></script>
    <script>
      mapboxgl.accessToken = 'YOUR_MAPBOX_ACCESS_TOKEN';
      const map = new mapboxgl.Map({
        container: 'map', // container ID
        center: [106.1813231568759, 29.556810823148066],
        zoom: 17,
        pitch: 60,
        attributionControl: false,
        style: `http://`
      });
    
      map.on('style.load', () => {
        const dayNight = new DayAndNight({
          map: map,
        })
    
        const itemList = document.getElementById('menu');
        const inputs = itemList.getElementsByTagName('input');
    
        for (const input of inputs) {
          input.onclick = (layer) => {
            const value = layer.target.value;
            dayNight.setConfigProperty(value)
          };
        }
      });
    </script>
    
    </html>
    

    在这里插入图片描述
    在这里插入图片描述

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

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

相关文章

vue中设置滚动条的样式

在vue项目中&#xff0c;想要设置如下图中所示滚动条的样式&#xff0c;可以采用如下方式&#xff1a; ​// 直接写在vue.app文件中 ::-webkit-scrollbar {width: 3px;height: 3px; } ::-webkit-scrollbar-thumb { //滑块部分// border-radius: 5px;background-color: #1890ff;…

excel数据重复率怎么计算【保姆教程】

大家好&#xff0c;今天来聊聊excel数据重复率怎么计算&#xff0c;希望能给大家提供一点参考。 以下是针对论文重复率高的情况&#xff0c;提供一些修改建议和技巧&#xff1a; excel数据重复率怎么计算 在Excel中计算数据重复率可以通过以下步骤实现&#xff1a; 1. 确定重复…

Java并发编程-synchronized、volatile、AQS解析

Java并发编程 synchronized 如何保证线程安全 JDK1.6 之前&#xff0c;synchronized 是一个重量级锁相比于JUC的锁显得非常笨重&#xff0c;存在性能问题 JDK1.6 及之后&#xff0c;Java 对 synchronized 进行的了一系列优化&#xff0c;性能与 JUC 的锁不相上下 synchroni…

python源码,在线读取传奇列表,并解析为需要的JSON格式

python源码&#xff0c;在线读取传奇列表&#xff0c;并解析为需要的JSON格式 [Server] ; 使用“/”字符分开颜色&#xff0c;也可以不使用颜色&#xff0c;支持以前的旧格式&#xff0c;只有标题和服务器标题支持颜色 ; 标题/颜色代码(0-255)|服务器标题/颜色代码(0-255)|服务…

WPF使用WebBrowser页面白屏,不显示渲染页面问题排查

前言 WPF使用WebBrowser页面白屏&#xff0c;不显示渲染页面问题排查 代码 <Window x:Class"WpfApp1.Window5"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/winfx/2006/xaml"x…

Kubernetes入门笔记 ——(3)理解pod对象

为什么需要pod 最为熟知的一句话&#xff1a;pod是k8s的最小调度单位。刚开始听到这句话时会想&#xff0c;已经有容器了&#xff0c;k8s为什么还要搞个pod出来&#xff1f;容器和pod是什么关系&#xff1f;容器的本质是进程&#xff0c;而k8s本质上类似操作系统。 熟悉Linux的…

在git使用SSH密钥进行github身份认证学习笔记

1.生成ssh密钥对 官网文档&#xff1a;Https://docs.github.com/zh/authentication&#xff08;本节内容对应的官方文档&#xff0c;不清晰的地方可参考此内容&#xff09; 首先&#xff0c;启动我们的git bush&#xff08;在桌面右键&#xff0c;点击 Git Bush Here &#xf…

SystemVerilog学习(0)——目录与传送门

一、验证导论 SystemVerilog学习&#xff08;1&#xff09;——验证导论-CSDN博客文章浏览阅读403次。SystemVerilog自学&#xff0c;验证系统概述&#xff0c;什么是SVhttps://blog.csdn.net/apple_53311083/article/details/133953016 二、数据类型 SystemVerilog学习&…

非标设计之气缸的选型三

一、气缸正确安装方式&#xff0c;气缸调试注意事项 气缸安装方式&#xff1a; 气缸正确安装方式&#xff1a; NB(无支架) FB(脚座支架) FR(法兰) FA(前法兰) FB(后法兰) SC(单耳支架) DC(双耳支架) CT(耳轴支架) 气缸的安装形式决定方法&#xff1a;根据负荷运动方向决定气缸…

二百一十二、Flume——Flume实时采集Linux中的目录文件写入到HDFS中(亲测、附截图)

一、目的 在实现Flume实时采集Linux中的Hive日志写入到HDFS后&#xff0c;再做一个测试&#xff0c;用Flume实时采集Linux中的目录文件&#xff0c;即使用 Flume 监听Linux整个目录的文件&#xff0c;并上传至 HDFS中 二、前期准备 &#xff08;一&#xff09;安装好Hadoop、…

微信个人号机器人开发

简要描述&#xff1a; 取消消息接收 请求URL&#xff1a; http://域名地址/cancelHttpCallbackUrl 请求方式&#xff1a; POST 请求头Headers&#xff1a; Authorization&#xff1a;login接口返回Content-Type&#xff1a;application/json 无参数 返回数据&#xff…

PADS9.5封装库转换为AD库

1、打开PADS Layout&#xff0c;File – Library&#xff0c;选中usr&#xff0c;如下图&#xff1a; 2、封装– 导入&#xff0c;选中你的 .d后缀文件(也就是PADS的封装文件)&#xff0c;打开。 3、元件 – 新建 – PCB封装 - 分配 - 确定。 4、&#xff0c;选择“斜线”…

vue3路由跳转页面到顶部,Stable Diffusion使用ControlNet

打开新页面时&#xff0c;页面自动回到顶部 在router.js页面添加 router.beforeEach((to, from, next) > {// 在每次导航之前滚动到页面顶部window.scrollTo({top: 0,behavior: smooth // 可选的&#xff0c;使滚动平滑进行});next(); }); Controlnet ControlNet 是用来…

RocketMQ-源码架构

源码环境搭建 1、主要功能模块 RocketMQ官方Git仓库地址&#xff1a;GitHub - apache/rocketmq: Apache RocketMQ is a cloud native messaging and streaming platform, making it simple to build event-driven applications. RocketMQ的官方网站下载&#xff1a;下载 | R…

001 LLM大模型之Transformer 模型

参考《大规模语言模型--从理论到实践》 目录 一、综述 二、Transformer 模型 三、 嵌入表示层&#xff08;位置编码代码&#xff09; 一、综述 语言模型目标是建模自然语言的概率分布&#xff0c;在自然语言处理研究中具有重要的作用&#xff0c;是自然 语言处理基础任务之一…

【软考中级——软件设计师】备战经验 笔记总结分享

考试成绩 我第一次备考是在2022 然后那时候取消了这次是第二次 靠前我一个月复习的看了以前的笔记 然后刷了七八道历年题目学习资料推荐 &#xff1a;zst——2021 b站链接自荐一下我的笔记 &#xff1a; 软考笔记专栏 视频确实很长 &#xff0c; 我的建议就是先看笔记 然后不会…

深度学习之全面了解网络架构

在这篇文章中&#xff0c;我们将和大家探讨“深度学习中的网络架构”这个主题&#xff0c;解释相关背景知识&#xff0c;并就一些问题进行解答。 我选择的问题反映的是常见用法&#xff0c;而不是学术用例。我将概括介绍该主题&#xff0c;然后探讨以下四个问题&#xff1a; …

泽攸科技二维材料转移台的应用场景及优势

随着二维材料的广泛研究和各种潜在应用的开发&#xff0c;对于二维材料样品的精密操控与转移的需求日益增加。特别是一些新型二维材料的制备和器件集成制备中&#xff0c;需要在显微镜下对样品进行观察与定位&#xff0c;并能够在微米甚至纳米量级上精确移動和转移样品。 传统…

做数据分析为何要学统计学(6)——什么问题适合使用方差分析?

方差分析&#xff08;ANOVA&#xff0c;也称变异数分析&#xff09;是英国统计学家Fisher&#xff08;1890.2.17&#xff0d;1962.7.29&#xff09;提出的对两个或以上样本总体均值进行差异显著性检验的方法。 它的基本思想是将测量数据的总变异&#xff08;即总方差&#xff…

Go语言初始化数组的六种方式

介绍 在Go语言中&#xff0c;有多种方式可以初始化数组&#xff0c;本文将介绍初始化数组的六种方法。 方式1&#xff1a;指定数组大小并初始化 var array [3]int [3]int{1, 2, 3}指定数组的大小为3&#xff0c;并初始化为指定的值1, 2, 3。 方式2&#xff1a;根据初始化值…