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

Openlayers高级交互(2/20):清除所有图层的有效方法

Openlayers项目中,经常会放置很多的图层,在业务操作的时候,会做出删除所有图层的行为。这里面给出了一个详细的方法,能够有效的解决 清除所有图层的问题。

效果图

在这里插入图片描述

专栏名称内容介绍
Openlayers基础实战 (72篇)专栏提供73篇文章,为小白群体提供基础知识及示例演示,能解决基础的开发问题
Openlayers高级应用(20篇)专栏提供20篇文章, 为有经验的开发者提供示例参考,对开发指导意义很大
Openlayers全面教程(300+)专栏提供300+篇文章示例, 可以全面的学习Openlayers,适合系统学习及各类开发者

配置说明

1)环境配置参考:https://blog.csdn.net/cuclife/article/details/126195754
2)将示例源代码,粘贴到src/views/Home.vue中,npm run serve 运行即可。

源代码

/*
* @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复度过高(超过60%)地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: 2909222303@qq.com
* @First published in xiaozhuanlan.com
* @Second published in CSDN
* @First published time: 2024-10-18
*/
<template><div class="container"><h3>vue+openlayers: 清空删除所有的图层 </h3><p>大剑师兰特,还是大剑师兰特</p><h4><el-button type="primary" size="mini" @click='showMap("World_Imagery")'>World_Imagery</el-button><el-button type="primary" size="mini" @click='showMap("World_Street_Map")'>World_Street_Map</el-button><el-button type="warning" size="mini" @click='clearALl()'>清除所有图层</el-button></h4><div id="vue-openlayers"></div></div>
</template><script>import 'ol/ol.css'import {Map,View} from 'ol'import Tile from 'ol/layer/Tile'import XYZ from "ol/source/XYZ";export default {data() {return {map: null,source: new XYZ({crossOrigin:"anonymous", }),}},methods: {//清除所有layerclearALl(){		this.map.getLayers().getArray().slice(0).forEach((layer) => {if (layer) {this.map.removeLayer(layer);}});},showMap(x) {this.source.clear()let url='https://server.arcgisonline.com/ArcGIS/rest/services/'+x+'/MapServer/tile/{z}/{y}/{x}'                this.source.setUrl(url);let showMaplayer = new Tile({source:this.source});this.map.addLayer(showMaplayer);},initMap() {this.map = new Map({target: "vue-openlayers",layers: [],view: new View({center: [13247019.404399557, 4721671.572580107],zoom: 3})})},},mounted() {this.initMap();this.showMap("World_Imagery");}}
</script>
<style scoped>.container {width: 1000px;height: 660px;margin: 10px auto;border: 1px solid #42B983;}#vue-openlayers {width: 960px;height: 480px;margin: 0 auto;border: 1px solid #42B983;position: relative;}
</style>

问题疑点与解决

目前使用的ol版本是7.0.0. 发现一个问题:

this.map.getLayers().getArray().forEach((layer) => {if (layer) {this.map.removeLayer(layer);}});

上述方式不能删除所有layer, 后来根据网上一个用户的解决方法,才出现了源代码中,添加slice(0)的解决办法,确实能删除所有图层。

http://www.lryc.cn/news/465693.html

相关文章:

  • 黑马JavaWeb-day02
  • laravel清除不同缓存
  • 【Git】解决分支冲突、分支合并、版本回退、版本管理
  • linux file结构体与inode结构体
  • 探索迷宫的奥秘:用 C++ 打造你的迷宫游戏之旅!
  • JSON 注入攻击 API
  • MyBatis入门程序之客户添加、更新与删除
  • 查缺补漏----数据结构树高总结
  • jenkins添加新服务
  • 网络连接设备的功能与应用概述
  • 【SpringCloud】04-Gateway网关登录校验
  • FFmpeg 库的简要说明
  • Go:error处理机制
  • Python机器学习中的主成分分析(PCA)全面解析与应用
  • MySQL 安装和基本使用
  • RequestBody接收参数报错com.fasterxml.jackson.databind.exc.MismatchedInputException
  • 大数据治理的关键技术:构建稳固的数据基石
  • OS管理和进程的学习
  • Linux 部署 Harbor 镜像仓库详解
  • 怎么把flv格式转换成mp4?将flv格式换成MP4格式的简单方法
  • 原型模式和建造模式的区别
  • 最新 client-java 调用 k8s ApiServer
  • TCP单包数据大于1460字节会被拆包的问题
  • 苏宁关键字搜索接口技术解析与实战
  • Java学习教程,从入门到精通,Java 基本数据类型详解(5)
  • 使用Flask实现本机的模型部署
  • 基于SSM的校园跑腿网站的设计与实现
  • 【Java】正则表达式详解
  • Java知识巩固(七)
  • Ubuntu22.04 更换源