# 十.Overlays 方法
# 1.叠加
查看代码详情
<template>
<div>
<div ref="map" class="map"></div>
<div style="display: none">
<a
class="overlay"
id="vienna"
target="_blank"
href="https://en.wikipedia.org/wiki/Vienna"
>Vienna</a
>
<div id="marker" title="Marker"></div>
<div id="popup" title="Welcome to OpenLayers"></div>
</div>
</div>
</template>
<script>
export default {
mounted() {
let {
Overlay,
Map,
View,
layer: { Tile: TileLayer },
source: { OSM },
style: Style,
proj: { fromLonLat, toLonLat },
coordinate: { toStringHDMS },
} = ol;
const layer = new TileLayer({
source: new OSM(),
});
const map = new Map({
layers: [layer],
target: this.$refs.map,
view: new View({
center: [12579156, 3274244],
zoom: 2,
}),
});
const pos = fromLonLat([16.3725, 48.208889]);
const popup = new Overlay({
element: document.getElementById("popup"),
});
map.addOverlay(popup);
const marker = new Overlay({
position: pos,
positioning: "center-center",
element: document.getElementById("marker"),
stopEvent: false,
});
map.addOverlay(marker);
const vienna = new Overlay({
position: pos,
element: document.getElementById("vienna"),
});
map.addOverlay(vienna);
map.on("click", function (evt) {
const element = popup.getElement();
const coordinate = evt.coordinate;
const hdms = toStringHDMS(toLonLat(coordinate));
$(element).popover("dispose");
popup.setPosition(coordinate);
$(element).popover({
container: element,
placement: "top",
animation: false,
html: true,
content:
"<p>The location you clicked was:</p><code>" + hdms + "</code>",
});
$(element).popover("show");
});
},
};
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76