openlayers 自定义瓦片(切片)颜色

news2024/11/15 10:37:15

本篇介绍一下使用openlayers 自定义瓦片(切片)颜色

1 需求

  • 自定义瓦片(切片)颜色

2 分析

使用各种source的tileLoadFunction属性

4 实现

修改前:

修改后:

<template>
  <div id="map" class="map"></div>
</template>

<script setup lang="ts">
import { Map, View } from 'ol';
import { Tile as TileLayer } from 'ol/layer';
import { get } from 'ol/proj';
import { XYZ } from 'ol/source';

const projection = get('EPSG:4326');

const layerTypeMap = {
  vector: ['vec', 'cva'], // [矢量底图, 矢量注记]
  image: ['img', 'cia'], // [影像底图, 影像注记]
  terrain: ['ter', 'cta'] // [地形晕渲, 地形注记]
};

const map = ref();

onMounted(() => {
  initMap('image');
});

const initMap = (layerType = 'image') => {
  const key = '替换为天地图key';
  // c: 经纬度投影 w: 墨卡托投影
  const matrixSet = 'c';
  map.value = new Map({
    target: 'map',
    layers: [
      // 底图
      new TileLayer({
        source: new XYZ({
          url: `https://t{0-7}.tianditu.gov.cn/DataServer?T=${layerTypeMap[layerType][0]}_${matrixSet}&tk=${key}&x={x}&y={y}&l={z}`,
          projection,
					tileLoadFunction:handleTileLoadFunction
        })
      }),
      // 注记
      new TileLayer({
        source: new XYZ({
          url: `https://t{0-7}.tianditu.gov.cn/DataServer?T=${layerTypeMap[layerType][1]}_${matrixSet}&tk=${key}&x={x}&y={y}&l={z}`,
          projection,
        })
      })
    ],
    view: new View({
      center: [116.406393, 39.909006],
      projection: projection,
      zoom: 5,
      maxZoom: 17,
      minZoom: 1
    })
  });
};

const handleTileLoadFunction=(imageTile: any, src: string) => {
  // 该函数默认为imageTile.getImage().src = src;
  // 以下为自定义
  let img = new Image();
  img.setAttribute('crossOrigin', 'Anonymous');
  img.src = src;
  img.onload = () => {
    let canvas = document.createElement('canvas');
    let w = img.width;
    let h = img.height;
    canvas.width = w;
    canvas.height = h;
    let context = canvas.getContext('2d');
    context!.filter = 'hue-rotate(100deg)';
    context?.drawImage(img, 0, 0, w, h, 0, 0, w, h);
    const imageData = context!.getImageData(0, 0, canvas.width, canvas.height);
    const pixelData = imageData?.data ?? [];
		// pixelData 为数组 是[r,g,b,a]的循环结构
    for (let i = 0; i < pixelData.length; i++) {
      // pixelData[i * 4 + 0] r 通道;
      // pixelData[i * 4 + 1] g 通道;
      // pixelData[i * 4 + 2] b 通道;
      // pixelData[i * 4 + 3] a 通道;
    }
    context!.putImageData(imageData, 0, 0, 0, 0, canvas.width, canvas.height);
    imageTile.getImage().src = canvas.toDataURL('image/png');
  };

};

</script>
<style scoped lang="scss">
.map {
  width: 100%;
  height: 100%;
}
</style>


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

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

相关文章

Linux内核虚拟内存空间

Linux中进程的虚拟内存空间被分为用户态内存空间和内核态内存空间&#xff0c;在32位和64位操作系统中&#xff0c;虚拟内存的布局如下&#xff1a; 32位 内核态虚拟内存空间是所有进程共享的&#xff0c;不同进程进入内核态之后看到的虚拟内存空间全部是一样的。 什么意思呢&…

【研究】美国2023年就业增长可能是假的?加州已经爆出大雷

美国就业市场可能比火热的非农数据所描绘的场面惨淡得多。 去年以来&#xff0c;美国劳动力市场顶着二十多年来最高的利率一路高歌猛进&#xff0c;让许多市场分析人士开始怀疑数据的准确性。尽管官方报告显示就业形势向好&#xff0c;但越来越多的证据表明&#xff0c;实际情…

RK3568技术笔记十三 Ubuntu的编译

Ubuntu文件系统编译 在编译前需要按照前面的方法初始化编译环境&#xff0c;否则会导致编译失败&#xff08;若配置过则无需重复配置&#xff09;。 按下述方法编译的Ubuntu系统&#xff0c;用户名是&#xff1a;dianyu 密码&#xff1a;1 编译Ubuntu&#xff0c;执…

electron-builder创建桌面应用

一、利用vue-cli创建vue项目 创建electron方式有很多&#xff0c;这里说的是vuecli创建的项目&#xff0c;通过安装electron-builder插件创建 也可以通过electron-vite构建项目 &#xff1a; https://cn.electron-vite.org/guide/ vue-cli构建 vue create XXX项目名 //按提示操…

​Chrome插件:React Developer Tools为React开发调试而生

React Developer Tools 是什么? 它是允许在Chrome和Firefox开发者工具中检查React组件层次结构的扩展插件。 插件源码下载 源码下载地址:GitHub - facebook/react-devtools at v3 下载完成以后执行红框中的代码,下载react-devtools 源码,源码如下图所示: 插件打包 当前n…

为什么javaer认为后台系统一定要用java开发?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「java的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;公司有两个开发团队&#xf…

开源创新框架MoA,可极大增强大模型的能力

知名大模型平台Together AI开源了一个创新框架Mixture-of-Agents&#xff08;简称&#xff0c;MoA&#xff09;。 MoA可以显著提升大模型的生成内容的能力和安全性&#xff0c;同时降低对AI算力的需求。研究人员在AlpacaEval 2.0、MT-Bench和FLASK等多个基准上进行了全面评测&…

Vatee万腾平台:一站式智慧服务,让生活更美好

在数字化浪潮席卷全球的今天&#xff0c;我们生活的方方面面都在经历着前所未有的变革。Vatee万腾平台凭借其一站式智慧服务&#xff0c;正成为推动这场变革的重要力量&#xff0c;让我们的生活变得更加美好。 Vatee万腾平台&#xff0c;作为一家专注于提供智慧服务的领军企业&…

趣测系统搭建APP源码开发,娱乐丰富生活的选择!

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 趣测系统提供了一个集合多种有趣测试的平台&#xff0c;如心理测试和星座测试等&#xff0c;这些测试内容富有趣味性和娱乐性&#xff0c;能够帮助大众在忙碌的生活中找到放松和娱乐的时刻…

品牌进行3D数字化转型,有哪些优势?

各行业都在经历着从增量市场向存量市场的转变&#xff0c;同时用户的消费观念也日趋成熟&#xff0c;更加注重产品的体验和服务质量。 无论是线上购物平台还是线下实体门店&#xff0c;提供个性化和增强体验感的产品与服务已成为未来发展的核心驱动力&#xff0c;品牌转型也迫…

openlayer 我的标注功能

背景&#xff1a; 通过openlayer库&#xff0c;可以在地图上实现绘制点、线、面。 并把绘制的结果添加到我的标注的弹框。 我的标注功能&#xff0c;包括&#xff1a;我的标注查询结果的数据展示&#xff1b;添加分组&#xff1b;添加我的标注&#xff1b;编辑分组、删除分组&a…

6.26.3 基于Transformer的深度神经网络在数字乳腺断层合成图像上的乳腺癌分类

开发一种有效的深度神经网络模型&#xff0c;该模型结合了相邻图像部分的上下文&#xff0c;以检测数字乳腺断层合成(DBT)图像上的乳腺癌。 数字乳房断层合成(DBT)是一种医学成像技术&#xff0c;其中检测器围绕患者以有限角度旋转并记录多幅图像。然后将这些图像重建为二维(2D…

猫头虎 最新 Linux 系统查看服务器温度的方法大全

猫头虎 &#x1f42f;最新 Linux 系统查看服务器温度的方法大全&#x1f31f; 摘要 本文详细介绍了如何在 Linux 系统中查看服务器温度的方法&#xff0c;涵盖了多种工具和命令的使用&#xff0c;包括 lm-sensors、hwmon、thermal 以及其他相关工具。 这些方法适用于各种 Lin…

制作高校专属PPT时,如何将校徽设置成透明底色?无须PS

目录 示例&#xff1a;以清华大学为例 1必应搜索“清华大学校徽” 2保存清华大学校徽及校名。 3将校徽导入到PPT中 ​4 选中校徽&#xff0c;然后依次选择“图片格式”-->颜色-->设置透明色​编辑 5出现“画笔”&#xff0c;由于截图的缘故&#xff0c;画笔没有在截…

简单的同步压缩变换脊线检测(PythonMATLAB)

由于 Heisenberg 测不准原理&#xff0c;线性时频变换方法无法同时在时间和频率方向达到最佳的时频分布&#xff0c;窗函数和小波函数的选择也降低了各方法的自适应性。同样&#xff0c;二次型变换方法难以在去除交叉干扰项的同时保证较高的能量集中度。为了解决该问题&#xf…

vue表头字段添加鼠标悬浮提示

<el-table-column prop"jfScore" align"center" min-width"100px"><template slot"header" slot-scope"scope"><div><span>信用积分</span><el-tooltip:aa"scope"class"it…

Jetpack - Navigation: 一个全面的安卓开发指南

引言 导航是任何安卓应用程序中至关重要的部分。无缝地在不同的屏幕之间移动并传递数据&#xff0c;对于流畅的用户体验来说至关重要。在这篇博客中&#xff0c;我们将深入探讨Jetpack的Navigation组件&#xff0c;这个强大的框架旨在简化安卓应用中的导航。我们将涵盖从设置和…

TCP、UDP详解

TCP和UDP是传输层的两个重要协议&#xff0c;也是面试中经常会被问到的&#xff0c;属于面试高频点。今天&#xff0c;我们来学习这两个协议。 1.区别 1.1 概括 TCP&#xff1a;有连接&#xff0c;可靠传输&#xff0c;面向字节流&#xff0c;全双工 UDP&#xff1a;无连接…

vue3 【提效】自动注册组件 unplugin-vue-components 实用教程

还在为每次都要导入组件而烦恼吗 &#xff1f; // 每次都需手动导入组件 import webName from /components/webName.vue用 unplugin-vue-components 来帮你吧&#xff0c;以后组件直接拿来用即可&#xff0c;无需再导入啦 &#xff01; <webName />使用流程 1. 安装 un…

nodejs安装(2024最最最最新版)

node官网 Index of /dist/https://nodejs.org/dist/ 选择版本 我比较喜欢16.20.1或者是14.16.1,这两个版本简直天下无敌了 下一步 选择这个,下载下来一个文件 一直点击下一步,就安装成功了 可能遇见的问题 1.安装了node,为什么不生效还是以前自己电脑安装的版本? 答: 可…