首页 > 其他分享 >Openlayers高级交互(2/20):清除所有图层的有效方法

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

时间:2024-10-20 13:52:40浏览次数:3  
标签:map layer ol 20 source Openlayers 图层

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: [email protected]
* @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: {
			//清除所有layer
			clearALl(){		
				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)的解决办法,确实能删除所有图层。

标签:map,layer,ol,20,source,Openlayers,图层
From: https://blog.csdn.net/cuclife/article/details/143041668

相关文章

  • 2048 Fixed by Lowloon Lowloon
    Copiedfrom2048CreatedbyVastUniverse_HoryFixedbyLowloon#include<bits/stdc++.h>#include<conio.h>#include<windows.h>#defineendl"\n"usingnamespacestd;charold;unsignedlonglongmat[100][100];intn,m;int......
  • Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除
    layerGroup是OpenLayers库中的一个类,用于创建图层组。图层组允许您将多个图层组合在一起,并作为一个整体来控制它们的可见性和其他属性。本示例动态添加layer到layerGroup,并动态删除。效果图专栏名称内容介绍Openlayers基础实战(72篇)专栏提供73篇文章,为小白群体提供基......
  • 2024.10.20 1315版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------......
  • 2024-2025-1 20241403《计算机基础与程序设计》第四周学习总结
    学期(如2024-2025-1)学号(如:20241403)《计算机基础与程序设计》第四周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第四周作业)这个作业的目标门电......
  • 中国各省/地级市/县域统计年鉴面板数据三合一(2024全新整理)
    文章目录数据下载地址数据指标说明一、数据名称:中国县域统计年鉴面板数据二、数据名称:中国城市统计年鉴面板数据-全市/市辖区版三、数据名称:中国各省统计面板数据项目备注数据下载地址数据下载地址点击这里下载数据数据指标说明统计年鉴面板数据给大家的研究工作......
  • 随意门导航zlibrary镜像地址入口(2024更新)
    随意门导航是一个集实用性与便捷性于一体的综合性网址导航网站,它为广大网民提供了一个快速访问各类热门网站和实用工具的便捷平台。在这个网站上,你可以轻松找到涵盖电子书下载、学术资源、生活工具、常用查询以及音乐在线听等多个领域的网址链接。随意门导航的设计简洁明了,用......
  • P5048 [Ynoi2019 模拟赛] Yuno loves sqrt technology III
    Sol蒲公英题意基本相同,但是注意到空间限制62.5MB,显然不能用蒲公英的做法。考虑先把整块的答案算出来,然后把小块的部分补上去,显然大块可以预处理,小块可以直接暴力查询是否越界。代码很简单。Code#include<iostream>#include<iomanip>#include<cstdio>#include<vector>......
  • 机器学习周报(10.14-10.20)
    目录摘要Abstract1决策树的剪枝(DecisionTreePruning)1.1预剪枝(Pre-Pruning)1.2后剪枝(Post-Pruning)2集成树(TreeEnsembles)2.1多决策树(MultipleDecisionTrees)2.2有放回抽样(SamplingwithReplacement)2.3随机森林算法(RandomForestAlgorithm)2.4......
  • z-library镜像地址,如何获取最新网址(2024.10.20)
    zlibrary数字图书馆介绍Z-library被称为全球最大的数字图书馆,里面包含9,826,996本电子书,84,837,646篇期刊文章。从各种知名文学著作,理工学科,人文艺术、到学术论文等应有尽有!支持PDF、epub、mobi等多种格式图书资源下载绝对是你找书的不二选择。zlibrary数字图书馆镜像网址......
  • 20241313 刘鸣宇 《计算机基础与科学概论》第四周学习总结
    《C语言程序设计》学习总结1.学习了基础算数运算符并通过AI了解了常用运算符的优先级2.学习了复合的赋值运算符,增1与减1运算符,以及前缀与后缀的不同3.学习了宏常量与宏替换#define4.学习了const函数并对比了解const函数相比于宏常量的优势(const函数有数据类型,编译器能对其经......