首页 > 其他分享 >Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除

Openlayers高级交互(3/20):动态添加 layer 到 layerGroup,并动态删除

时间:2024-10-20 13:47:26浏览次数:7  
标签:layer ol 20 myname geoGroupLayer import new 动态 data

layerGroup 是 OpenLayers 库中的一个类,用于创建图层组。图层组允许您将多个图层组合在一起,并作为一个整体来控制它们的可见性和其他属性。本示例动态添加layer到layerGroup,并动态删除。

效果图

在这里插入图片描述

专栏名称内容介绍
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)
* @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,未经授权,不得重复地发表到博客、论坛,问答,git等公共空间或网站中。
* @Email: [email protected]
* @First published in CSDN
* @First published time: 2024-10-19
*/

<template>
	<div class="container">
		<h3>vue+openlayers: 动态添加layer到layerGroup,并动态删除</h3>
		<p>大剑师兰特, 还是大剑师兰特</p>
		<h4>
			<span v-for="(item,index) in pointData" :key="index">
				<el-button type="danger" v-show="item.isShow" size="mini" @click='removegpLayer(item)'>删除{{item.myname}}
				</el-button>
				<el-button type="primary" v-show="!item.isShow" size="mini" @click='addgpLayer(item)'>添加{{item.myname}}
				</el-button>
			</span>
		</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 GroupLayer from 'ol/layer/Group'
	import OSM from 'ol/source/OSM'
	import LayerVector from 'ol/layer/Vector'
	import VectorSource from 'ol/source/Vector'
	import Feature from 'ol/Feature'
	import Point from 'ol/geom/Point'
	import Fill from 'ol/style/Fill'
	import Stroke from 'ol/style/Stroke'
	import Style from 'ol/style/Style'
	import Circle from 'ol/style/Circle'

	export default {
		data() {
			return {
				pointData: [{
						myname: 'layer1',
						point: [114.064839, 22.548857],
						isShow: false,
					},
					{
						myname: 'layer2',
						point: [114.074839, 22.548857],
						isShow: false,
					},
				],
				map: null, // 地图
				draw: null,
				geoGroupLayer: new GroupLayer({
					layers: [],
					zIndex: 3,
					myname:"geoGroupLayer",
				}),
			}
		},

		methods: {
			removegpLayer(data) {
				data.isShow = !data.isShow;
				this.geoGroupLayer.getLayers().getArray().forEach((layer, index, array) => {	
					
					if (layer.get('myname') == data.myname) {
						array.splice(index, 1)
					}
				})
			    this.map.removeLayer(this.geoGroupLayer);
				this.map.addLayer(this.geoGroupLayer)
				
			},
			addgpLayer(data) {
				this.map.removeLayer(this.geoGroupLayer);
				let pointFeature = new Feature({
					geometry: new Point(data.point),
				})
				let pointsource = new VectorSource({
					wrapX: false
				});
				pointsource.addFeature(pointFeature)
				let vector = new LayerVector({
					myname: data.myname,
					source: pointsource,
					// Vector层显示的样式
					style: new Style({
						fill: new Fill({
							color: [255, 255, 255, 0.00001]
						}),
						stroke: new Stroke({
							width: 2,
							color: "#00f",
						}),
						image: new Circle({ //点样式
							radius: 10,
							fill: new Fill({
								color: '#ff00ff'
							})
						}),
					})
				});

				this.geoGroupLayer.getLayers().getArray().push(vector);
				 data.isShow = !data.isShow;
				this.map.addLayer(this.geoGroupLayer)
			},

			initMap() {
				let raster = new Tile({
					source: new OSM(),
					myname: "OSM"
				});

				this.map = new Map({
					target: "vue-openlayers",
					layers: [raster],
					view: new View({
						projection: "EPSG:4326",
						center: [114.064839, 22.548857],
						zoom: 13
					})
				})
			},


		},
		mounted() {
			this.initMap()
		}
	}
</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>


标签:layer,ol,20,myname,geoGroupLayer,import,new,动态,data
From: https://blog.csdn.net/cuclife/article/details/143057388

相关文章

  • 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函数有数据类型,编译器能对其经......
  • 2024-2025-1 20241304 《计算机基础与程序设计》第4周学习总结
    2024-2025-120241304《计算机基础与程序设计》第4周学习总结作业信息|这个作业属于哪个课程|<2024-2025-1-计算机基础与程序设计)|>|-- |-- ||这个作业要求在哪里|<作业要求的链接>(https://www.cnblogs.com/rocedu/p/9577842.html#WEEK04))||这个作业的目标|<复习第四章内......
  • 2024-2025-1 20241327 《计算机基础与程序设计》第四周学习总结
    作业信息|2024-2025-1-计算机基础与程序设计)||--|-|2024-2025-1计算机基础与程序设计第四周作业)||快速浏览一遍教材计算机科学概论(第七版),课本每章提出至少一个自己不懂的或最想解决的问题并在期末回答这些问题|作业正文|https://www.cnblogs.com/shr060414/p/18440575|教......