当前位置: 首页 > wzjs >正文

公众号建网站谷歌google浏览器官方下载

公众号建网站,谷歌google浏览器官方下载,com域名购买,网批做衣服的网站1. 实现效果预览 2. 为什么要动态调节地图色彩 在可视化场景中,底图往往只是信息载体—— 数据层 要足够突出 底图层 应尽量“退后”而不失真 通过动态调整 Brightness / Contrast / Saturate,可以在不重新渲染瓦片或切换底图的情况下,快…

1. 实现效果预览


2. 为什么要动态调节地图色彩

在可视化场景中,底图往往只是信息载体——

  • 数据层 要足够突出

  • 底图层 应尽量“退后”而不失真

通过动态调整 Brightness / Contrast / Saturate,可以在不重新渲染瓦片或切换底图的情况下,快速让地图背景与前景数据形成最佳对比;这对交互式仪表盘、监控大屏、夜间模式尤为常见。


3. 技术栈与环境

技术版本说明
Vue3.4.xComposition API + <script setup>
Vite5.x本地开发与打包
OpenLayers9.x地图核心库
Element Plus2.x滑块组件
Tailwind CSS3.x原子化快速布局(可选)


4. 核心思路

  1. CSS Filter:直接对渲染到 <canvas> 的栅格瓦片加滤镜,浏览器级别支持,无需二次绘制瓦片。

  2. Composition APIref 管理三个滑块状态;onMounted 初始化地图;updateFilter 统一刷新。

  3. OpenLayers 一次性渲染map.render() 主动触发重绘,配合 map.once('postcompose', …) 在首帧应用默认滤镜。


5. 关键代码

function updateFilter() {// OpenLayers 会把画布渲染到容器内部第一个 canvasconst canvas = document.querySelector('#vue-openlayers canvas')if (!canvas) returnconst b = brightness.value / 100const c = contrast.value / 100const s = saturate.valuecanvas.style.filter = `brightness(${b}) contrast(${c}) saturate(${s})`map?.render() // 主动触发一次重绘,立即生效
}

为什么选 document.querySelector('#vue-openlayers canvas')

  • OpenLayers 会把所有瓦片渲染到容器里的 第一个 <canvas>

  • 直接修改该节点的 style.filter 即可。

  • 若项目后续向底图之上叠加矢量图层或自定义 Overlay,不会受此滤镜影响(矢量图层会渲染到另一张 canvas)。


6. 完整示例(可直接复制)

<!--* @Author: 彭麒* @Date: 2025/7/4* @Email: 1062470959@qq.com* @Description: 此源码版权归吉檀迦俐所有,可供学习和借鉴或商用。-->
<template><div class="container"><div class="w-full flex justify-center flex-wrap"><div class="font-bold text-[24px]">在Vue3中使用OpenLayers调节地图的明亮度、对比度、饱和度</div></div><h4><div class="one">明亮度:<el-sliderclass="slider"v-model="brightness":format-tooltip="v => v / 100"@change="updateFilter"/></div><div class="one">对比度:<el-sliderclass="slider"v-model="contrast":format-tooltip="v => v / 100"@change="updateFilter"/></div><div class="one">饱和度:<el-sliderclass="slider"v-model="saturate":format-tooltip="v => v"@change="updateFilter"/></div></h4><div id="vue-openlayers"></div></div>
</template><script setup>
import { ref, onMounted } from 'vue'
import 'ol/ol.css'
import { Map, View } from 'ol'
import TileLayer from 'ol/layer/Tile'
import OSM from 'ol/source/OSM'// 1. 滑块状态
const brightness = ref(100)
const contrast = ref(100)
const saturate = ref(100)// 2. 地图实例(用 let 以便后续 render)
let map = null// 3. 同步滤镜到 <canvas>
function updateFilter() {// OpenLayers 会把画布渲染到容器内部第一个 canvasconst canvas = document.querySelector('#vue-openlayers canvas')if (!canvas) returnconst b = brightness.value / 100const c = contrast.value / 100const s = saturate.valuecanvas.style.filter = `brightness(${b}) contrast(${c}) saturate(${s})`map?.render() // 主动触发一次重绘,立即生效
}// 4. 初始化地图
onMounted(() => {const osmLayer = new TileLayer({source: new OSM()})map = new Map({target: 'vue-openlayers',layers: [osmLayer],view: new View({projection: 'EPSG:4326',center: [139.6485790340825, 35.27194604343114],zoom: 14})})// 初始渲染完成后应用默认滤镜map.once('postcompose', updateFilter)
})
</script><style scoped>
.container {width: 840px;height: 570px;margin: 50px auto;border: 1px solid #42B983;position: relative;
}
#vue-openlayers {width: 800px;height: 400px;margin: 0 auto;border: 1px solid #42B983;position: relative;
}
h4 {width: 810px;margin: 0 auto;display: flex;flex-wrap: nowrap;justify-content: space-between;
}
.one {width: 250px;
}
.slider {width: 60%;margin: 0 auto;
}
</style>

7. 性能与可扩展性

方向建议
性能仅改写 canvas.style.filter,GPU 级别加速;参数归零时几乎无损耗。
组合还可以叠加 grayscale()invert()hue-rotate() 等滤镜,用同一 updateFilter() 拼接即可。
响应式如需在漫游地图时持续生效,换用 map.on('postrender', ...) 监听每帧而非手动 render()
主题切换把三个 ref 存到 pinia 或 URL Query,可实现主题或分享链接。

8. 踩坑记录

  1. 多次 map.on('postcompose') 叠加

    • 若在每个滑块回调里新增监听,会创建 N 条事件,导致滤镜叠加失效。

    • 统一一个 updateFilter 即可。

  2. filter 顺序影响效果

    • contrast() 放在 brightness() 之前会让色阶更明显;

    • 建议按 “亮 → 对比 → 饱和” 排列。

  3. 不支持 IE 浏览器

    • CSS filter 在 IE11 下仅支持灰度、反色等少数特效。

    • 若必须兼容,可改用 Canvas 自行调像素(性能差、代码复杂)。


9. 结语

通过一种极其轻量的方式,我们让 OpenLayers 底图在 Vue 3 项目中具备了专业可视化软件才有的亮/对/饱调节功能。

这不仅能显著提升可视化观感,也能为夜间模式、主题色适配提供灵活方案。

若对文中内容有疑问,或想交流更多 地图可视化Three.js 技术,评论区见!

http://www.dtcms.com/wzjs/361345.html

相关文章:

  • 电子商务网站设计html模板创新驱动发展战略
  • 深圳市大鹏建设局网站外链下载
  • 广州房地产网站建设免费合作推广
  • 网站开发制作心得优帮云排名优化
  • 济南经三路专业做网站seo排名赚app
  • 做网站为什么要购买空间新平台怎么推广
  • 聊城做网站的公司效果搜索引擎分类
  • 站群系统的优劣cms系统
  • 网站上的logo怎么做重庆做优化的网络公司
  • 定制网站制作广州七牛云
  • 动易如何做网站网站推广优化业务
  • 怎么做飞机票的图片网站市场调研报告范文大全
  • 网站页面布局名称市场调研报告范文2000
  • 建设银行 钓鱼网站网络营销推广策略有哪些
  • wdcp网站备份问题com网站域名注册
  • 公章在线印章制作生成免费优化设计三年级下册数学答案
  • 网站建设都 包括哪些qq推广网站
  • 微信建立免费网站吗最近中国新闻热点大事件
  • 网站制作的主要流程近期的重大新闻
  • 深圳独立站建站公司爱网站关键词查询工具
  • 茶山东莞网站建设网站百度推广
  • 网站建设和网站搭建哪个好大同优化推广
  • 网站网站地图怎么做东莞网站优化公司
  • asp做素材网站百度首页推广广告怎么做
  • 济南网站制作案例哪些网站可以免费申请域名
  • 桂林生活网发布信息整站seo排名要多少钱
  • 网站建设技术文章搜索排名优化公司
  • 建设厅官方网站河南微博推广方式
  • 微信客服泉州seo网站排名
  • 专门做预售的网站搭建网站需要什么技术