共计 1807 个字符,预计需要花费 5 分钟才能阅读完成。
导读 | 本文通过实例代码给大家介绍 Vue+Openlayer 中使用 select 选择要素,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧 |
效果图:
实现代码:
<template> | |
<div id="map" ref="map" style="width: 100vw; height: 100vh"></div> | |
</template> | |
<script> | |
import "ol/ol.css"; | |
import {Map, View} from "ol"; | |
import {OSM, Vector as VectorSource} from "ol/source"; | |
import {Vector as VectorLayer, Tile as TileLayer} from "ol/layer"; | |
import GeoJSON from "ol/format/GeoJSON"; | |
import Select from "ol/interaction/Select"; | |
import {altKeyOnly, click, pointerMove} from "ol/events/condition"; | |
export default { | |
name: "gif", | |
data() { | |
return {map: {}, | |
layer: {}, | |
geojsonData: { | |
type: "FeatureCollection", | |
features: [ | |
{ | |
type: "Feature", | |
properties: {title: "警报 1",}, | |
geometry: { | |
type: "Point", | |
coordinates: [91.48879670091165, 37.83814884701121], | |
}, | |
}, | |
{ | |
type: "Feature", | |
properties: {title: "警报 2",}, | |
geometry: { | |
type: "Point", | |
coordinates: [99.19515576149941, 26.713646654711134], | |
}, | |
}, | |
{ | |
type: "Feature", | |
properties: {title: "警报 3",}, | |
geometry: { | |
type: "Point", | |
coordinates: [123.74363825288785, 44.363694825734726], | |
}, | |
}, | |
], | |
}, | |
select: {},}; | |
}, | |
mounted() {this.initMap(); | |
}, | |
methods: { | |
// 初始化地图 | |
initMap() { | |
this.layer = new VectorLayer({ | |
source: new VectorSource({features: new GeoJSON().readFeatures(this.geojsonData), | |
}), | |
}); | |
this.map = new Map({ | |
target: "map", | |
layers: [ | |
new TileLayer({source: new OSM(), | |
}), | |
this.layer, | |
], | |
view: new View({ | |
projection: "EPSG:4326", | |
center: [104.912777, 34.730746], | |
zoom: 4.5, | |
}), | |
}); | |
this.select = new Select({condition: click, // 单击选择}); | |
this.map.addInteraction(this.select); | |
this.select.on("select", (e) => { | |
let coordinate = e.mapBrowserEvent.coordinate; // 获取选择的坐标 | |
let properties = e.selected[0].getProperties(); // 获取当前要素的所有属性}); | |
// 设置鼠标划过矢量要素的样式 | |
this.map.on("pointermove", (e) => {const isHover = this.map.hasFeatureAtPixel(e.pixel); | |
this.map.getTargetElement().style.cursor = isHover ? "pointer" : "";}); | |
}, | |
}, | |
}; | |
</script> |
到此这篇关于 Vue+Openlayer 中使用 select 选择要素的实现代码的文章就介绍到这了
正文完
星哥玩云-微信公众号
