Skip to content

Commit 10f354a

Browse files
committed
refactor(ol-vector-image-layer): migrate to script setup
1 parent a90d4eb commit 10f354a

File tree

5 files changed

+74
-93
lines changed

5 files changed

+74
-93
lines changed

docs/componentsguide/layers/vectorimagelayer/index.md

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ Load features simply by providing url value and format GeoJSON
2323
<ol-map
2424
:loadTilesWhileAnimating="true"
2525
:loadTilesWhileInteracting="true"
26-
style="height:400px"
26+
style="height: 400px"
2727
>
2828
<ol-view
2929
ref="view"
@@ -43,31 +43,17 @@ Load features simply by providing url value and format GeoJSON
4343
</ol-map>
4444
</template>
4545
46-
<script>
46+
<script setup>
4747
import { ref, inject } from "vue";
48-
export default {
49-
setup() {
50-
const center = ref([0, 0]);
51-
const projection = ref("EPSG:4326");
52-
const zoom = ref(3);
53-
const rotation = ref(0);
54-
55-
const url = ref("https://openlayers.org/data/vector/ecoregions.json");
56-
57-
const format = inject("ol-format");
58-
console.log(format);
59-
const geoJson = new format.GeoJSON();
60-
61-
return {
62-
center,
63-
projection,
64-
zoom,
65-
rotation,
66-
url,
67-
geoJson,
68-
};
69-
},
70-
};
48+
49+
const center = ref([0, 0]);
50+
const projection = ref("EPSG:4326");
51+
const zoom = ref(3);
52+
const rotation = ref(0);
53+
54+
const url = ref("https://openlayers.org/data/vector/ecoregions.json");
55+
const format = inject("ol-format");
56+
const geoJson = new format.GeoJSON();
7157
</script>
7258
```
7359

@@ -82,7 +68,7 @@ A CSS class name to set to the layer element.
8268

8369
### opacity
8470

85-
- **Type**: `number `
71+
- **Type**: `number`
8672
- **Default**: `1`
8773

8874
Opacity (0, 1).
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
<template lang="">
2+
<div>
3+
<slot></slot>
4+
</div>
5+
</template>
6+
7+
<script setup>
8+
import { inject, provide, onUnmounted, onMounted, watch, computed } from "vue";
9+
10+
import VectorImageLayer from "ol/layer/VectorImage";
11+
import usePropsAsObjectProperties from "@/composables/usePropsAsObjectProperties";
12+
import useBaseLayerProps from "@/composables/useBaseLayerProps";
13+
14+
const props = defineProps({
15+
...useBaseLayerProps(),
16+
renderBuffer: {
17+
type: Number,
18+
default: 100,
19+
},
20+
updateWhileAnimating: {
21+
type: Boolean,
22+
default: false,
23+
},
24+
styles: {
25+
type: [String, Array, Function],
26+
},
27+
updateWhileInteracting: {
28+
type: Boolean,
29+
default: false,
30+
},
31+
});
32+
33+
const map = inject("map");
34+
35+
const { properties } = usePropsAsObjectProperties(props);
36+
37+
const vectorImageLayer = computed(() => new VectorImageLayer(properties));
38+
39+
watch(properties, () => {
40+
vectorImageLayer.value.setProperties(properties);
41+
});
42+
43+
onMounted(() => {
44+
map.addLayer(vectorImageLayer.value);
45+
});
46+
47+
onUnmounted(() => {
48+
map.removeLayer(vectorImageLayer.value);
49+
});
50+
51+
provide("vectorLayer", vectorImageLayer);
52+
provide("stylable", vectorImageLayer);
53+
54+
defineExpose({
55+
vectorImageLayer,
56+
});
57+
</script>
58+
59+
<style lang=""></style>

src/components/layers/VectorImageLayer.vue

Lines changed: 0 additions & 63 deletions
This file was deleted.

src/components/layers/index.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import WebGLTileLayer from "./WebGLTileLayer.vue";
2-
import VectorImageLayer from "./VectorImageLayer.vue";
2+
import OlVectorImageLayer from "./OlVectorImageLayer.vue";
33
import VectorLayer from "./VectorLayer.vue";
44
import OlAnimatedClusterLayer from "./OlAnimatedClusterLayer.vue";
55
import OlHeatmapLayer from "./OlHeatmapLayer.vue";
@@ -18,8 +18,8 @@ function install(app) {
1818
app.component("ol-heatmap-layer", OlHeatmapLayer);
1919
app.component("ol-image-layer", OlImageLayer);
2020
app.component("ol-tile-layer", OlTileLayer);
21+
app.component("ol-vector-image-layer", OlVectorImageLayer);
2122
app.component(WebGLTileLayer.name, WebGLTileLayer);
22-
app.component(VectorImageLayer.name, VectorImageLayer);
2323
app.component(VectorLayer.name, VectorLayer);
2424
app.component(WebglPointsLayer.name, WebglPointsLayer);
2525
}
@@ -32,8 +32,8 @@ export {
3232
OlHeatmapLayer,
3333
OlImageLayer,
3434
OlTileLayer,
35+
OlVectorImageLayer,
3536
WebGLTileLayer,
36-
VectorImageLayer,
3737
VectorLayer,
3838
WebglPointsLayer,
3939
};

src/demos/VectorSourceDemo4.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,5 @@ const rotation = ref(0);
3232
3333
const url = ref("https://openlayers.org/data/vector/ecoregions.json");
3434
const format = inject("ol-format");
35-
console.log(format);
3635
const geoJson = new format.GeoJSON();
3736
</script>

0 commit comments

Comments
 (0)