File tree 3 files changed +91
-1
lines changed
3 files changed +91
-1
lines changed Original file line number Diff line number Diff line change 40
40
"core-js" : " ^3.6.5" ,
41
41
"file-saver" : " ^2.0.5" ,
42
42
"jspdf" : " ^2.3.1" ,
43
- "ol" : " ^6.6.1 " ,
43
+ "ol" : " ^6.12.0 " ,
44
44
"ol-contextmenu" : " ^4.1.0" ,
45
45
"ol-ext" : " ^3.2.4" ,
46
46
"proj4" : " ^2.7.5" ,
Original file line number Diff line number Diff line change
1
+ <template lang="">
2
+ <div >
3
+ <slot ></slot >
4
+ </div >
5
+ </template >
6
+
7
+ <script >
8
+ import {
9
+ inject ,
10
+ provide ,
11
+ onUnmounted ,
12
+ onMounted ,
13
+ watch ,
14
+ computed
15
+ } from ' vue'
16
+
17
+ import TileLayer from ' ol/layer/WebGLTile' ;
18
+ import usePropsAsObjectProperties from ' @/composables/usePropsAsObjectProperties'
19
+ import BaseLayer from " ./BaseLayer"
20
+ export default {
21
+ extends: BaseLayer,
22
+ name: ' ol-webgl-tile-layer' ,
23
+ setup (props ) {
24
+
25
+ const map = inject (' map' );
26
+ const overViewMap = inject (' overviewMap' , null );
27
+
28
+ const {
29
+ properties
30
+ } = usePropsAsObjectProperties (props);
31
+
32
+ const tileLayer = computed (() => new TileLayer (properties));
33
+
34
+ const applyTileLayer = () => {
35
+
36
+ if (overViewMap != null ) {
37
+ overViewMap .value .getOverviewMap ().addLayer (tileLayer .value );
38
+ overViewMap .value .changed ();
39
+ } else {
40
+ map .addLayer (tileLayer .value );
41
+ }
42
+ };
43
+
44
+ const removeTileLayer = () => {
45
+
46
+ if (overViewMap != null ) {
47
+ overViewMap .value .getOverviewMap ().removeLayer (tileLayer .value );
48
+ overViewMap .value .changed ();
49
+ } else {
50
+ map .removeLayer (tileLayer .value );
51
+ }
52
+ };
53
+
54
+ if (overViewMap != null ) {
55
+ watch (overViewMap, () => {
56
+ removeTileLayer ();
57
+ applyTileLayer ();
58
+
59
+ });
60
+ }
61
+
62
+ onMounted (() => {
63
+ applyTileLayer ();
64
+ });
65
+
66
+ onUnmounted (() => {
67
+ removeTileLayer ();
68
+ });
69
+
70
+ provide (' tileLayer' , tileLayer);
71
+
72
+ return {
73
+ tileLayer
74
+ }
75
+ },
76
+ props: {
77
+ preload: {
78
+ type: Number ,
79
+ default: 1
80
+ },
81
+ }
82
+ }
83
+ </script >
84
+
85
+ <style lang="">
86
+
87
+ </style >
Original file line number Diff line number Diff line change 1
1
import TileLayer from './TileLayer.vue'
2
+ import WebGLTileLayer from './WebGLTileLayer.vue'
2
3
import ImageLayer from './ImageLayer.vue'
3
4
import VectorLayer from './VectorLayer.vue'
4
5
import AnimatedClusterLayer from './AnimatedClusterLayer'
@@ -13,6 +14,7 @@ function install(app) {
13
14
install . installed = true
14
15
15
16
app . component ( TileLayer . name , TileLayer )
17
+ app . component ( WebGLTileLayer . name , WebGLTileLayer )
16
18
app . component ( ImageLayer . name , ImageLayer )
17
19
app . component ( VectorLayer . name , VectorLayer )
18
20
app . component ( AnimatedClusterLayer . name , AnimatedClusterLayer )
@@ -24,6 +26,7 @@ export default install
24
26
export {
25
27
install ,
26
28
TileLayer ,
29
+ WebGLTileLayer ,
27
30
ImageLayer ,
28
31
VectorLayer ,
29
32
AnimatedClusterLayer ,
You can’t perform that action at this time.
0 commit comments