openlayers-17-卷帘对比

news2025/1/16 1:53:32

卷帘对比运行示例

实现卷帘对比功能,没有进一步测试版本兼容问题,不错从ol的官网来看,ol6之前的版本的示例与ol6及其之后的版本示例并不相同

  • ol5 示例https://openlayers.org/en/v5.3.0/examples/layer-swipe.html?q=layer+swipe
  • ol6示例 https://openlayers.org/en/latest/examples/layer-swipe.html

看下图,对canvas进行clip的时期不一致

在这里插入图片描述

在这里插入图片描述

以下代码仅作为一个思路参考,如果对你有所帮助,请帮忙点个赞,谢谢。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>卷帘对比</title>
    <link href="ol/ol.css" rel="stylesheet" type="text/css" />
    <script src="ol/ol.js" type="text/javascript"></script>
    <style type="text/css">
        html,body{
            margin: 0;
            padding: 0;
            height: 100%;
            width: 100%;
        }
        #mapCon {
            width: 100%;
            height: 100%;
        }
        /*拖拽区div样式*/
        .swipe  {
            position: absolute;
            top: 50%;
            z-index: 882128;
            height: 0px; /*横条的高度*/
        }
        /*修改滑块默认样式*/
        input[type=range]{
            margin-top: 8px;
            outline: none;
            -webkit-appearance: none;/*清除系统默认样式*/
            width:99% !important;
            background: -webkit-linear-gradient(#61bd12, #61bd12) no-repeat, #ddd;
            background-size: 100% 100%;/*设置左右宽度比例*/
            height: 0px;/*横条的高度*/
        }
        /*拖动块的样式*/
        input[type=range]::-webkit-slider-thumb {
            -webkit-appearance: none;/*清除系统默认样式*/
            height:32px;/*拖动块高度*/
            width: 32px;/*拖动块宽度*/
            background: #ffffff;/*拖动块背景*/
            background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAMAAAC5zwKfAAAABlBMVEV9fX3///+Kct39AAAAAnRSTlP/AOW3MEoAAAA9SURBVFjD7dehDQAwDANBZ/+l2wmKoiqR7pHRcaeaCxAIBAL/g7k9JxAIBAKBQCAQCAQC14H+MhAIBE4CD3fOFvGVBzhZAAAAAElFTkSuQmCC");
            background-size: 100% 100%;
            border-radius: 50%; /*外观设置为圆形*/
            border: solid 1px #e1e1e1; /*设置边框*/
            background-position: left;
        }
    </style>
</head>
<body>
<!-- 地图容器 -->
<div id="mapCon">
    <input id="swipe" type="range" class="swipe"/>
</div>

<script type="text/javascript">
    var key = "4689fc6b9bc0fdc8c48298f751ebfb41";//天地图密钥

    //创建天地图矢量图层
    var TiandiMap_vec = new ol.layer.Tile({
        title: "天地图矢量图层",
        source: new ol.source.XYZ({
            url: "http://t{0-7}.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=" + key,
            wrapX: false
        })
    });
    //创建天地图影像图层
    var TiandiMap_img = new ol.layer.Tile({
        name: "天地图影像图层",
        source: new ol.source.XYZ({
            url: "http://t{0-7}.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=" + key,//TiandituKey为天地图密钥,
            crossOrigin: 'anonymous',
            wrapX: false
        })
    });

    //实例化Map对象加载地图
    var map = new ol.Map({
        //地图容器div的ID
        target: 'mapCon',
        //地图容器中加载的图层
        layers: [TiandiMap_vec,TiandiMap_img],
        //地图视图设置
        view: new ol.View({
            //地图初始中心点(经纬度)
            center: [118.37, 37.14],
            //地图初始显示级别
            zoom: 7,
            projection: "EPSG:4326"
        })
    });
    var swipe = document.getElementById('swipe');   // 用于控制卷帘位置的DOM元素
    TiandiMap_img.on('precompose', function(event){          // 在地图渲染之前触发
        var ctx = event.context;                 //获得canvas渲染上下文
        var width = ctx.canvas.width * (swipe.value / 100);  // 用于保存卷帘的位置

        ctx.save();                 // 保存canvas设置
        ctx.beginPath();            // 开始绘制路径
        ctx.rect(width, 0, ctx.canvas.width - width, ctx.canvas.height);    // 绘制矩形
        ctx.clip();                 // 裁剪Bing地图,以形成卷帘效果
    })

    TiandiMap_img.on('postcompose', function(event){     // 在地图渲染之后触发
        var ctx = event.context;
        ctx.restore();              // 恢复canvas设置
    });

    swipe.addEventListener('input', function(){     // 在每次用户改变swipe控件时触发
        map.render();               // 渲染地图
    }, false);
</script>
</body>
</html>

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

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

相关文章

GIS跟踪监管系统

GIS跟踪监管系统 系统架构功能模块1. 基本功能2. 仓库管理3. 物资查询 系统采用B/S架构&#xff0c;前端使用的技术为HTMLCSSJavaScript&#xff08;Leaflet、jQuery、bootstrap等&#xff09;&#xff0c;后台采用.NET框架。 系统架构 救援物资跟踪监管系统的架构如图所示&am…

Matplotlib入门

基本使用 基本用法 import matplotlib.pyplot as plt import numpy as npxnp.linspace(-1,1,50) y2*x1plt.figure()#定义一个图像窗口 plt.plot(x,y)#画&#xff08;x&#xff0c;y&#xff09;曲线 plt.show()#显示图像figure图像 import matplotlib.pyplot as plt import …

nat的基础配置(动态nat,nat server)

目录 1.静态nat 2.动态nat &#xff08;1&#xff09;配置公网地址池 &#xff08;2&#xff09;配置acl&#xff0c;匹配做nat转换的源 &#xff08;3&#xff09;将源转换为公网地址&#xff0c;其中no-pat表示不做端口转化&#xff0c;只做一对一的地址转换 3.nat ser…

《向量数据库指南》——向量数据库Milvus Cloud为什么选择开源?

开源对我们来说是一种信仰。从最早开始研发向量数据库的时候&#xff0c;我们就相信应该让更多人了解并使用优秀的技术&#xff0c;这是我们选择做开源的原因。 无论是在 AI 领域还是其他领域&#xff0c;我们希望技术不会被少数大公司垄断。在向量数据库问世之前&#xff0c;阿…

python:优化一EXCEL统计用类封装一下

# encoding: utf-8 # 版权所有 2023 涂聚文有限公司 # 许可信息查看&#xff1a; # 描述&#xff1a; # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 311 # Datetime : 2023/9/17 5:40 # User : geovindu # Product : PyCharm # Proj…

JSON和全局异常处理

目录 1️⃣JSON 一、什么是json&#xff1f; 二、与javascript的关系 三、语法格式 四、注意事项 五、总结 六&#xff0c;使用json 1导入pom.xml依赖 2.配置spring-mvc.xml 3. ResponseBody注解使用 创建一个web层控制器 编写ClazzBiz 实现接口 测试&#xff1a; …

C#,数值计算——Hashfn2的计算方法与源程序

1 文本格式 using System; using System.Collections; using System.Collections.Generic; namespace Legalsoft.Truffer { public class Hashfn2 { private static ulong[] hashfn_tab { get; set; } new ulong[256]; private ulong h { get; set;…

【2023年11月第四版教材】第13章《资源管理》(第三部分)

第13章《资源管理》&#xff08;第部分&#xff09; 4 管理过程4.1 数据表现★★★4.2 资源管理计划★★★4.2 团队章程★★★ 5 估算活动资源 4 管理过程 组过程输入工具和技术输出规划1.规划资源管理1.项目章程2.项目管理计划&#xff08;质量管理计划、范围基准&#xff09…

elasticsearch5-RestAPI操作

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

Python 布尔类型和比较运算符

视频版教程 Python3零基础7天入门实战视频教程 布尔( bool&#xff09;表达现实生活中的逻辑&#xff0c;即真和假&#xff0c;True表示真&#xff0c;False表示假。 实例&#xff1a; # 布尔类型定义 b1 True b2 False print(f"b1{b1},类型是{type(b1)}") prin…

分类预测 | MATLAB实现WOA-CNN-LSTM-Attention数据分类预测

分类预测 | MATLAB实现WOA-CNN-LSTM-Attention数据分类预测 目录 分类预测 | MATLAB实现WOA-CNN-LSTM-Attention数据分类预测分类效果基本描述模型描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现WOA-CNN-LSTM-Attention数据分类预测&#xff0c;运行环境Matlab2021b及以…

Vue3+Ts+Vite项目(第十五篇)——tailwindcss安装及使用详解,css原子化如何实现

文章目录 一、装包二、初始化2.1 终端执行如下命令2.2 postcss.config.js 文件中2.3 tailwind.config.js 文件中 三、样式文件3.1 新建 tailwind.css 文件3.2 main.ts 中引入 四、使用4.1 写入类名即可4.2 简单讲解 五、插件5.1 安装 Tailwind CSS IntelliSense5.2 使用效果 六…

系统架构设计高级技能 · 构件与中间件技术

点击进入系列文章目录 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 系统架构设计高级技能 构件与中间件技术 一、构件的定义二、构件系统架构特性三…

Vue ——09、路由模式,404和路由勾子

路由嵌套&#xff0c;参数传递及重定向 一、路由模式&#xff08;有#号&#xff0c;跟没#号&#xff09;二、404三、路由勾子四、在钩子函数中使用异步请求————————创作不易&#xff0c;如觉不错&#xff0c;随手点赞&#xff0c;关注&#xff0c;收藏(*&#xffe3;︶…

STM32 CubeMx教程 -- 基础知识及配置使用教程

文章目录 前言一、STM32CubeMx 界面介绍File 界面Windows 界面Help 界面Updater Settings 界面 二、STM32CubeMx 使用教程新建工程配置RCC时钟参数配置SYS参数配置时钟树Project&#xff08;工程设置&#xff09;Code Generator&#xff08;代码生成器&#xff09;工程创建 三、…

Day46:项目-购物车案例

购物车案例 准备工作 首页默认加载&#xff0c;其余页面懒加载 调用defineStore方法构建store 入口main做对应配置&#xff0c;找指南&#xff0c;快速开始&#xff0c;把elementplus引入进来 import { createApp } from "vue"; import { createPinia } from &qu…

基于香橙派和SU-03T 使用Linux实现语音控制刷抖音

硬件介绍 SU-03T之前在小车的时候使用过&#xff0c;详见&#xff1a;语音小车---6 最终整合_mjmmm的博客-CSDN博客 按照下图进行接线&#xff1a; 项目需求 通过语音指令来控制安卓手机刷抖音&#xff0c;可以实现视频切换和点赞等功能&#xff1a; 1. 开机播报“你好&a…

产品经理-战略-战略的含义和层级

引言 22年老板在听我做部门人员数量汇报时&#xff0c;当场就给我们部门员工做能力标签&#xff0c;过了几天就输出了一个公司所有技术岗位的能力标签。其中有一项是战略思维&#xff0c;该项满分是5分&#xff0c;我们部门同事绝大部分人都只有2分&#xff0c;我自己也就3…

数据结构-leetcode-环形链表Ⅱ

有了上一篇的基础&#xff0c;做这一篇会相对容易些&#xff0c;没看上一篇的一定要去看看再来。 先看题&#xff1a; 解题图解&#xff1a; 1.首先要使快慢指针相遇 2. 代码如下&#xff1a; struct ListNode *detectCycle(struct ListNode *head) {struct ListNode * fasthe…

IF,AND,OR 或嵌套 IF 在 Excel 中不是逻辑函数

事情并非总是我们希望的那样。 意外的事情可能发生。 例如&#xff0c;假设您必须将数字相除。 尝试将任何数字除以零&#xff08;0&#xff09;都会产生错误。 在这种情况下&#xff0c;逻辑功能很方便。 在本教程中&#xff0c;我们将涵盖以下主题。 在本教程中&#xff0c;…