openalyers 好玩的效果之蒙版图层

先看下我之前利用arcgis js api实现的蒙版效果:

 

arcgis js 4.18新体验:阴影滤镜图层_Giser_往事随风的博客-CSDN博客arcgis api for javascript 4.18 又双叕 出了 ,感叹 esri 开发团队高产的同时,又不得不怀疑自己能否追的上技术更新换代的速度。唯有变被动为主动,不断的提高自己,才能拿跟上时代的发展。4.18所有的图层都添加了一个effect 这样一个属性,简单了解下,类似于前端css的filter 的滤镜效果话不多说,老规矩先看下实现的效果:直接上代码吧(是完整的代码哦),里面用到的技术是蒙版效果与滤镜属性相结合;<!DOCTYPE html>...https://blog.csdn.net/KK_bluebule/article/details/111382043

arcgis js 4.18新体验:阴影滤镜图层

然后老规矩,看下利用 ol 去实现的效果吧

 

 用的资源都是在线网址,不是切好的tif哦~~~

第一张图是可以只露出想要区域的底图,外部的可以设置透明色;

第二张图在第一份的基础上加了个影像,只显示mask 内部的影像。

很简单,也很有意思,可以延伸出其他在前端可以展示的效果。

实现过程:

主要用的是 ol-ext 的插件实现的(哈哈我也是站在别人的肩膀上蹦跶下的)

插件网址:ol-ext

然后直接上代码吧

<template>
  <div id="olMap"></div>
</template>

<script>
import 'ol-ext/dist/ol-ext.min.css';
import { Map, View } from "ol";
import OSM from "ol/source/OSM"
import Stamen from 'ol/source/Stamen'
import TileLayer from "ol/layer/Tile"
import GeoJSON from "ol/format/GeoJSON";
import Fill from "ol/style/Fill";
import Mask from 'ol-ext/filter/Mask'
import Crop from 'ol-ext/filter/Crop'
import {createTDTImg} from '@/components/map/olMap/modules/basemap'
export default {
  name: "ol-蒙版图层",
  data() {
    return {
      mapObj:{
        map:null,
        view:null,
      },
      namespace:'testKH',
      layername:'shushan',
      baseUrl:'http://localhost:7777/geoserver/testKH/'
    }
  },
  mounted() {
    this.initMap();
  },
  methods: {
    initMap(){
      const osmBaseLayer = new TileLayer({
        source:new OSM()
      })
      this.mapObj.view = new View({
        center: [117.28, 31.86],
        zoom: 8,
        projection: 'EPSG:4326',
      })
      this.mapObj.map = new Map({
        layers :[osmBaseLayer],
        view:this.mapObj.view,
        target:'olMap'
      })
      //添加蒙版图层
      let f = new GeoJSON().readFeature(require('@/assets/indexMap.json').features[0])
      var mask = new Mask({
        feature: f,
        wrapX: true,
        inner: false,
        fill: new Fill({ color:[255,255,255,0.6] })
      });
      var crop = new Crop({
        feature: f,
        wrapX: true,
        inner: false
      });
      // 若不加天地图就直接将osmlayer 使用addFilter 就行
      // osmBaseLayer.addFilter(crop);
      // osmBaseLayer.addFilter(mask);

      let tdtImgLayer = createTDTImg();
      tdtImgLayer.addFilter(crop);
      tdtImgLayer.addFilter(mask);
      this.mapObj.map.addLayer(tdtImgLayer)
    }
  },
  components: {}
}
</script>

<style scoped>
#olMap{
  height:100%;
  width: 100%;
}
</style>

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是uniapp跳转页面过渡效果蒙版的介绍: 1.跳转页面过渡效果 在uniapp中,可以通过设置页面的animation属性来实现跳转页面的过渡效果。具体步骤如下: (1)在跳转的目标页面中,设置页面的animation属性,例如: ```html <template> <view class="container" animation="{{animationData}}"> <!-- 页面内容 --> </view> </template> <script> export default { data() { return { animationData: {} // 动画对象 } }, onShow() { // 创建动画对象 const animation = uni.createAnimation({ duration: 500, // 动画时长 timingFunction: 'ease-in-out', // 缓动函数 delay: 0 // 延迟时间 }) // 设置动画效果 animation.translateX(100).step() // 更新动画对象 this.animationData = animation.export() } } </script> ``` (2)在跳转的源页面中,使用uni.navigateTo或uni.redirectTo方法跳转到目标页面,例如: ```javascript uni.navigateTo({ url: '/pages/target/target' }) ``` 2.蒙版 在uniapp中,可以通过设置一个遮罩层来实现蒙版效果。具体步骤如下: (1)在页面中添加一个遮罩层,例如: ```html <template> <view class="container"> <!-- 页面内容 --> <view class="mask" v-show="showMask"></view> </view> </template> <style> .mask { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); z-index: 999; } </style> ``` (2)在页面的data中添加一个showMask属性,用于控制遮罩层的显示和隐藏,例如: ```javascript export default { data() { return { showMask: false // 是否显示遮罩层 } } } ``` (3)在需要显示遮罩层的时候,将showMask属性设置为true,例如: ```javascript this.showMask = true ``` (4)在需要隐藏遮罩层的时候,将showMask属性设置为false,例如: ```javascript this.showMask = false ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Giser_往事随风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值