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

【openlayers框架学习】九:openlayers中的交互类(select和draw)


文章目录

    • openlayers进阶
      • 28 openlayers中的事件
      • 29 openlayers中select交互类的使用
      • 30 openlayers中select常见的配置选项
      • 31 openlayers中绘制交互类(Draw)


openlayers进阶

28 openlayers中的事件

常用进行事件交互的对象:map\view\source

29 openlayers中select交互类的使用

Interaction->Draw

Interaction->Select

import './style.css';
import Map from 'ol/Map';
import 'ol/ol.css';
import View from 'ol/View';
import TileLayer from 'ol/layer/Tile';
import { XYZ } from 'ol/source';
import VectorSource from 'ol/source/Vector';
import GeoJSON from 'ol/format/GeoJSON.js';
import VectorLayer from 'ol/layer/Vector.js';
import Style from 'ol/style/Style';
import Fill from 'ol/style/Fill';
import Stroke from 'ol/style/Stroke';
import Select from 'ol/interaction/Select.js';
const center = [114.25, 30.59];
const view = new View({center: center,zoom: 4,projection: "EPSG:4326",
});
//城市矢量地图-高德地图瓦片
const gaodeSource = new XYZ({url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}',
});
const gaodeLayer = new TileLayer({source: gaodeSource,
});
const map = new Map({target: "map",view: view,layers: [gaodeLayer],
});
//加载矢量地图 将一些矢量数据(很多格式 如GEOJSON)加载到底图上
const vectorSource = new VectorSource({url:'https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json',//处理对应的矢量数据格式format: new GeoJSON(),
});
const vectorLayer = new VectorLayer({source: vectorSource,style: new Style({fill: new Fill({// color: "red", //填充为红色color: "rgba(255,0,0,0.6)", //填充为红色}),stroke: new Stroke({color:"green",}),}),
});
//加载数据需要发送请求 => 异步 在回调函数中处理数据
// vectorSource.on("change",function(){
//     console.log(this.getFeatures());
// });
//GeoJSON的数据格式 记录的是要素信息的集合 要素信息 包括自定义属性 几何信息(经纬度-形状)
map.addLayer(vectorLayer);
const select = new Select();
map.addInteraction(select);
select.on('select',function(e){console.log(e);const f = e.selected[0];f.setStyle(new Style({fill: new Fill({color:"rgba(0,255,0,0.6)",}),}));
});

30 openlayers中select常见的配置选项

main.js

import './style.css';
import Map from 'ol/Map';
import 'ol/ol.css';
import View from 'ol/View';
import TileLayer from 'ol/layer/Tile';
import { XYZ } from 'ol/source';
import VectorSource from 'ol/source/Vector';
import GeoJSON from 'ol/format/GeoJSON.js';
import VectorLayer from 'ol/layer/Vector.js';
import Style from 'ol/style/Style';
import Fill from 'ol/style/Fill';
import Stroke from 'ol/style/Stroke';
import Select from 'ol/interaction/Select.js';
import { pointerMove } from 'ol/events/condition';
const center = [114.25, 30.59];
const view = new View({center: center,zoom: 4,projection: "EPSG:4326",
});
//城市矢量地图-高德地图瓦片
const gaodeSource = new XYZ({url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}',
});
const gaodeLayer = new TileLayer({source: gaodeSource,
});
const map = new Map({target: "map",view: view,layers: [gaodeLayer],
});
//加载矢量地图 将一些矢量数据(很多格式 如GEOJSON)加载到底图上
const vectorSource = new VectorSource({url:'https://geo.datav.aliyun.com/areas_v3/bound/100000_full.json',//处理对应的矢量数据格式format: new GeoJSON(),
});
const vectorLayer = new VectorLayer({source: vectorSource,style: new Style({fill: new Fill({// color: "red", //填充为红色color: "rgba(255,0,0,0.6)", //填充为红色}),stroke: new Stroke({color:"green",}),}),
});
//加载数据需要发送请求 => 异步 在回调函数中处理数据
// vectorSource.on("change",function(){
//     console.log(this.getFeatures());
// });
//GeoJSON的数据格式 记录的是要素信息的集合 要素信息 包括自定义属性 几何信息(经纬度-形状)
map.addLayer(vectorLayer);
const select = new Select({condition:pointerMove,  //鼠标移动时触发,默认是点击时触发filter:function(feature, layer){return layer === vectorLayer; //过滤图层}
});
map.addInteraction(select);
select.on('select',function(e){console.log(e);const f = e.selected[0];f.setStyle(new Style({fill: new Fill({color:"rgba(0,255,0,0.6)",}),}));
});

31 openlayers中绘制交互类(Draw)

Interaction->Draw

main.js

import './style.css';
import Map from 'ol/Map';
import 'ol/ol.css';
import View from 'ol/View';
import TileLayer from 'ol/layer/Tile';
import { XYZ } from 'ol/source';
import VectorSource from 'ol/source/Vector';
import GeoJSON from 'ol/format/GeoJSON.js';
import VectorLayer from 'ol/layer/Vector.js';
import Style from 'ol/style/Style';
import Fill from 'ol/style/Fill';
import Stroke from 'ol/style/Stroke';
import Draw from 'ol/interaction/Draw.js';
const center = [114.25, 30.59];
const view = new View({center: center,zoom: 4,projection: "EPSG:4326",
});
//城市矢量地图-高德地图瓦片
const gaodeSource = new XYZ({url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}',
});
const gaodeLayer = new TileLayer({source: gaodeSource,
});
const map = new Map({target: "map",view: view,layers: [gaodeLayer],
});//加载矢量地图 
const vectorSource = new VectorSource();
const vectorLayer = new VectorLayer({source: vectorSource,style: new Style({stroke: new Stroke({color:"red",width:4,}),}),
});const draw = new Draw({type:'LineString',source: vectorLayer.getSource(),
});map.addInteraction(draw);
map.addLayer(vectorLayer);
http://www.xdnf.cn/news/16888.html

相关文章:

  • 【LLM】 BaseModel的作用
  • MySQL面试题及详细答案 155道(021-040)
  • Spring Cloud微服务中的内存泄漏问题定位与解决方案
  • SelectDB数据库,新一代实时数据仓库的全面解析与应用
  • Linux 环境下 Docker 安装与简单使用指南
  • 百度招黑产溯源安全工程师
  • 《软件测试与质量控制》实验报告二 单元测试
  • MSQL-聚簇索引与非聚簇索引的比较
  • Python编程基础与实践:Python文件处理入门
  • SpringBoot 信用卡检测、OpenAI gym、OCR结合、DICOM图形处理、知识图谱、农业害虫识别实战
  • 【7.5 Unity AssetPostprocessor】
  • 【自动化运维神器Ansible】YAML支持的数据类型详解:构建高效Playbook的基石
  • linux ext4缩容home,扩容根目录
  • Trae + Notion MCP:将你的Notion数据库升级为智能对话机器人
  • 元宇宙重构未来交通新图景
  • 无人机光伏巡检漏检率↓78%!陌讯多模态融合算法实战解析
  • 机试备考笔记 2/31
  • Agentic RAG:自主检索增强生成的范式演进与技术突破
  • 深入 Go 底层原理(二):Channel 的实现剖析
  • 深入 Go 底层原理(十四):timer 的实现与高性能定时器
  • cuda编程笔记(12)--学习cuFFT的简单使用
  • 【机器学习】非线性分类算法(上):KNN(基于距离相似度)与朴素(特征独立)贝叶斯(基于概率统计)
  • Lock 接口及实现类详解:从 ReentrantLock 到并发场景实践
  • Node.js 操作 MongoDB
  • 【LeetCode 热题 100】739. 每日温度——(解法一)单调栈+从右到左
  • 最新Windows11系统镜像,23H2 64位ISO镜像
  • 拉格朗日插值法
  • 【软考中级网络工程师】知识点之堆叠
  • MySQL PostgreSQL JDBC URL 配置允许批量操作
  • 系统思考:超越线性分析