Skip to content

Commit 3e77dfe

Browse files
committed
fix(ol-webgl-vector-layer): call make properties reactive
closes #355
1 parent 479d765 commit 3e77dfe

File tree

3 files changed

+56
-8
lines changed

3 files changed

+56
-8
lines changed

Diff for: src/components/layers/OlWebglVectorLayer.vue

+1-3
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,7 @@ const props = withDefaults(
3333
},
3434
);
3535
36-
const { layer } = useLayer(WebGLVectorLayer, {
37-
...props,
38-
});
36+
const { layer } = useLayer(WebGLVectorLayer, props);
3937
4038
provide("webglVectorLayer", layer);
4139

Diff for: src/demos/WebglVectorLayerDemo.vue

+38-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,24 @@
11
<template>
2+
<form>
3+
<fieldset>
4+
<label for="opacity">Layer Opacity</label>
5+
<input
6+
type="range"
7+
id="opacity"
8+
min="0"
9+
max="1"
10+
step="0.1"
11+
v-model.number="opacity"
12+
/>
13+
<span class="description">{{ opacity }}</span>
14+
</fieldset>
15+
<fieldset>
16+
<label for="visibility-toggle">Layer Visibility:</label>
17+
<input type="checkbox" id="visibility-toggle" v-model="visible" />
18+
<span> {{ visible ? "Visible" : "Hidden" }}</span>
19+
</fieldset>
20+
</form>
21+
222
<ol-map
323
:loadTilesWhileAnimating="true"
424
:loadTilesWhileInteracting="true"
@@ -16,7 +36,11 @@
1636
</ol-tile-layer>
1737

1838
<!-- webgl points layer -->
19-
<ol-webgl-vector-layer :styles="webglPointStyle">
39+
<ol-webgl-vector-layer
40+
:styles="webglPointStyle"
41+
:visible="visible"
42+
:opacity="opacity"
43+
>
2044
<ol-source-vector
2145
:format="geoJson"
2246
crossOrigin="anonymous"
@@ -25,7 +49,11 @@
2549
</ol-webgl-vector-layer>
2650

2751
<!-- webgl lines layer -->
28-
<ol-webgl-vector-layer :styles="webglLineStyle">
52+
<ol-webgl-vector-layer
53+
:styles="webglLineStyle"
54+
:visible="visible"
55+
:opacity="opacity"
56+
>
2957
<ol-source-vector
3058
:format="geoJson"
3159
crossOrigin="anonymous"
@@ -34,7 +62,11 @@
3462
</ol-webgl-vector-layer>
3563

3664
<!-- webgl polygons layer -->
37-
<ol-webgl-vector-layer :styles="webglPolyStyle">
65+
<ol-webgl-vector-layer
66+
:styles="webglPolyStyle"
67+
:visible="visible"
68+
:opacity="opacity"
69+
>
3870
<ol-source-vector
3971
:format="geoJson"
4072
crossOrigin="anonymous"
@@ -45,8 +77,10 @@
4577
</template>
4678

4779
<script setup lang="ts">
48-
import { ref, inject } from "vue";
80+
import { inject, ref } from "vue";
4981
82+
const opacity = ref(1);
83+
const visible = ref(true);
5084
const center = ref([-73.3, 48.0]);
5185
const projection = ref("EPSG:4326");
5286
const zoom = ref(7);

Diff for: src/demos/WebglVectorSourceDemo.vue

+17-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,19 @@
11
<template>
2+
<form>
3+
<fieldset>
4+
<label for="opacity">Layer Opacity</label>
5+
<input
6+
type="range"
7+
id="opacity"
8+
min="0"
9+
max="1"
10+
step="0.1"
11+
v-model.number="opacity"
12+
/>
13+
<span class="description">{{ opacity }}</span>
14+
</fieldset>
15+
</form>
16+
217
<ol-map
318
:loadTilesWhileAnimating="true"
419
:loadTilesWhileInteracting="true"
@@ -45,8 +60,9 @@
4560
</template>
4661

4762
<script setup lang="ts">
48-
import { ref, inject } from "vue";
63+
import { inject, ref } from "vue";
4964
65+
const opacity = ref(1);
5066
const center = ref([116.54875, 40.45064]);
5167
const projection = ref("EPSG:4326");
5268
const zoom = ref(16);

0 commit comments

Comments
 (0)