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

广告案例的网站专业外贸网站制作公司

广告案例的网站,专业外贸网站制作公司,怎么通过做网站来赚钱吗,客村网站建设本文介绍如何利用 OpenLayers 和 Vue3 实现地图画布的滤镜效果,例如:原始图、模糊、色相翻转、阴影等。无需操作地图图层,只需对 canvas 元素设置 CSS 样式即可。 ✨ 实现效果预览 点击不同按钮,实现地图滤镜快速切换:…

本文介绍如何利用 OpenLayers 和 Vue3 实现地图画布的滤镜效果,例如:原始图、模糊、色相翻转、阴影等。无需操作地图图层,只需对 canvas 元素设置 CSS 样式即可。

✨ 实现效果预览


点击不同按钮,实现地图滤镜快速切换:

  • ✅ 原始图:none

  • 🔍 模糊:blur(5px)

  • 🎨 色相翻转:hue-rotate(180deg)

  • 🌑 阴影:drop-shadow(0 0 5px #000)

📦 技术栈

  • Vue 3 + Composition API

  • OpenLayers v6+

  • Element Plus

  • CSS Filter 滤镜样式


🧩 核心思路

我们无需操作底图图层,只需获取地图对应的 <canvas> 元素,并为其设置 CSS filter 即可。渲染过程通过 map.render() 强制刷新。

🛠️ 完整代码实现

<!--* @Author: 彭麒* @Date: 2025/7/7* @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><el-button type="success"  size="small" @click="setFilter('none')">原始图</el-button><el-button type="primary"  size="small" @click="setFilter('blur(5px)')">模糊</el-button><el-button type="warning"  size="small" @click="setFilter('hue-rotate(180deg)')">色相翻转</el-button><el-button type="info"     size="small" @click="setFilter('drop-shadow(0 0 5px #000)')">阴影</el-button></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'/** OpenLayers 实例引用 */
const map = ref(null)/** 统一设置滤镜 */
function setFilter(filterValue) {if (!map.value) return// 直接设置 canvas 滤镜const canvas = document.querySelector('#vue-openlayers canvas')if (canvas) {canvas.style.filter = filterValue} else {// 如果找不到canvas,可以尝试使用更精确的选择器const canvasAlt = document.querySelector('#vue-openlayers .ol-viewport canvas')if (canvasAlt) canvasAlt.style.filter = filterValue}// 强制地图重新渲染map.value.render()
}onMounted(() => {map.value = new Map({target: 'vue-openlayers',layers: [new TileLayer({source: new OSM()})],view: new View({projection: 'EPSG:4326',center: [116.648, 39.271],zoom: 7})})
})
</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;
}
</style>

🧠 延伸知识

你可以使用 filter 实现更多视觉效果:

效果名称示例值
灰度图grayscale(100%)
亮度增强brightness(1.5)
对比度增强contrast(200%)
色彩饱和度降低saturate(20%)
多种滤镜叠加blur(3px) brightness(1.2)

示例:

setFilter('grayscale(100%) contrast(1.2) brightness(0.8)')

📝 总结

这种基于 canvas 层的视觉滤镜方案:

  • ✅ 不影响地图交互;

  • ✅ 不修改图层;

  • ✅ 实现简单灵活;

  • ✅ 可叠加自定义动画与动效。

适合快速实现地图视觉风格定制,如暗黑主题、增强对比、界面切换特效等场景。


📚 推荐阅读

  • OpenLayers 官方文档

  • CSS filter 属性

  • Vue 3 Composition API 入门指南


如需完整源码和在线体验,欢迎关注作者仓库或私信获取 🔧
如你觉得本篇文章对你有帮助,记得点赞 + 收藏 + 关注!

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

相关文章:

  • 洛阳建站公司效果杭州模板建站软件
  • 简述网站开发流程 旅游seo优化网站排名
  • 网站搭建网站管理潍坊高新建设局网站
  • 江门市专业做网站公司机械设计网
  • 网站页脚信息预约网站模板
  • 上海做网站公司推荐广西建设厅网站绿色建筑标识
  • 山东饰品行业网站制作网站制作设计哪家公司好
  • 个人网站模板html小程序建站平台
  • 网站建设重庆最加科技怎么给网站做开场动画
  • 不用花生壳做网站服务器wordpress建的网站
  • 如何与别的网站做友情链接服务网站欣赏
  • 足球网站模板下载wordpress下载页插件
  • 找做外墙油漆网站什么网站做跨境电子商务
  • 软件跟网站开发的区别公众号官网登录
  • 怎么做公司免费网站织梦网站文章发布模板下载
  • 太仓做企业网站服务器租赁合同范本
  • 网站开发工作商城网站定制建设价位
  • 南京建设网站维护2021深圳装修公司排名前十强
  • 网站建设备案优化网上书店网站建设方案策划
  • 非洲用什么网站做采购能够做冶金工程毕业设计的网站
  • 用html做网站的心得体会免费个人网站源码
  • 抖音网络营销案例抖音seo搜索引擎优化
  • 响应式网站开发遇到的问题导购网站怎么做
  • 网站开发公司+重庆网站建设成交话术
  • 凡科建站登录中山市路桥建设有限公司网站
  • 临沂专业网站制作北京网站优化经理
  • 重庆整站优化的电话销售wordpress云端采集
  • 帝国程序如何改网站标题asp.net做简易网站
  • 公司网站建设高端网站建设网页设计备案价格网站
  • 公司做个网站多少钱阿里云公司网站制作