Test v0.12.x
by Vladimir Vershinin
HTML
<script src="https://cdn.jsdelivr.net/gh/openlayers/openlayers.github.io@master/en/v6.4.3/build/ol.js"></script>
<script src="https://unpkg.com/[email protected]/dist/vue.js"></script>
<script src="https://unpkg.com/[email protected]/dist/vuelayers.umd.js"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/vuelayers.css">
<link rel="stylesheet" href="https://cdn.rawgit.com/Viglino/ol-ext/master/dist/ol-ext.min.css">
<script src="https://cdn.rawgit.com/Viglino/ol-ext/master/dist/ol-ext.min.js"></script>
<div id="app">
<button @click="show = !show">toggle</button>
<template v-if="foundFeature != null">
Found feature of layer-2: {{ foundFeature.getId() }}
</template>
<vl-map v-if="show" ref="map" data-projection="EPSG:4326" @pointermove="onPointerMove">
<vl-view :center.sync="center" :zoom.sync="zoom" :rotation.sync="rotation"></vl-view>
<vl-layer-tile>
<vl-source-osm></vl-source-osm>
</vl-layer-tile>
<vl-layer-vector id="layer-1">
<vl-source-vector :features="features1"></vl-source-vector>
</vl-layer-vector>
<vl-layer-vector id="layer-2">
<vl-source-vector :features="features2"></vl-source-vector>
</vl-layer-vector>
</vl-map>
</div>
CSS
html, body, #app {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
JavaScript
new Vue({
el: '#app',
data() {
return {
zoom: 2,
center: [0, 0],
rotation: 0,
accommodation: {},
show: true,
features1: [
{
type: 'Feature',
id: 'feature-1',
geometry: {
type: 'Point',
coordinates: [10, 10],
},
},
],
features2: [
{
type: 'Feature',
id: 'feature-2',
geometry: {
type: 'Point',
coordinates: [-10, -10],
},
},
],
foundFeature: null,
}
},
methods: {
onPointerMove (evt) {
this.foundFeature = this.$refs.map.$map.forEachFeatureAtPixel(
evt.pixel,
(feature, layer) => {
console.log(feature, layer)
return feature
},
{
layerFilter: (layer) => layer.get('id') === 'layer-2',
},
)
},
},
})