Skip to content

Commit 350c4e3

Browse files
committed
feat(ol-interaction-transform): relay events
closes #270
1 parent abe37e9 commit 350c4e3

File tree

3 files changed

+56
-6
lines changed

3 files changed

+56
-6
lines changed

docs/componentsguide/interactions/transform/index.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,3 +74,16 @@ import TransformDemo from "@demos/TransformDemo.vue"
7474

7575
- **Type**: `Boolean`
7676
- **Default**: `true`
77+
78+
## Events
79+
80+
- `select`
81+
- `rotatestart`
82+
- `rotating`
83+
- `rotateend`
84+
- `translatestart`
85+
- `translating`
86+
- `translateend`
87+
- `scalestart`
88+
- `scaling`
89+
- `scaleend`

src/components/interaction/OlTransformInteraction.vue

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Transform from "ol-ext/interaction/Transform";
88
import type { Condition } from "ol/events/condition";
99
import type Map from "ol/Map";
1010
import usePropsAsObjectProperties from "@/composables/usePropsAsObjectProperties";
11+
import { useOpenLayersEvents } from "@/composables/useOpenLayersEvents";
1112
1213
const props = withDefaults(
1314
defineProps<{
@@ -35,6 +36,11 @@ const props = withDefaults(
3536
},
3637
);
3738
39+
// prevent warnings caused by event pass-through via useOpenLayersEvents composable
40+
defineOptions({
41+
inheritAttrs: false,
42+
});
43+
3844
const map = inject<Map>("map");
3945
4046
const { properties } = usePropsAsObjectProperties(props);
@@ -47,6 +53,19 @@ const transform = computed(() => {
4753
return olTransform;
4854
});
4955
56+
useOpenLayersEvents(transform, [
57+
"select",
58+
"rotatestart",
59+
"rotating",
60+
"rotateend",
61+
"translatestart",
62+
"translating",
63+
"translateend",
64+
"scalestart",
65+
"scaling",
66+
"scaleend",
67+
]);
68+
5069
watch(transform, (newVal, oldVal) => {
5170
map?.removeInteraction(oldVal);
5271
map?.addInteraction(newVal);

src/demos/TransformDemo.vue

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,33 @@
3030
@drawend="drawend"
3131
/>
3232
<ol-style>
33-
<ol-style-stroke color="blue" :width="2"></ol-style-stroke>
34-
<ol-style-fill color="rgba(255, 0, 0, 0.4)"></ol-style-fill>
33+
<ol-style-stroke color="blue" :width="2" />
34+
<ol-style-fill color="rgba(255, 0, 0, 0.4)" />
3535
</ol-style>
3636
</ol-source-vector>
3737
</ol-vector-layer>
3838

39-
<ol-interaction-transform> </ol-interaction-transform>
39+
<ol-interaction-transform
40+
@select="log('select', $event)"
41+
@rotatestart="log('rotatestart', $event)"
42+
@rotating="log('rotate', $event)"
43+
@rotateend="log('rotateend', $event)"
44+
@translatestart="log('translatestart', $event)"
45+
@translate="log('translate', $event)"
46+
@translateend="log('translateend', $event)"
47+
@scalestart="log('scalestart', $event)"
48+
@scaling="log('scaling', $event)"
49+
@scaleend="log('scaleend', $event)"
50+
/>
4051
</ol-map>
4152
</template>
4253

43-
<script setup>
54+
<script setup lang="ts">
4455
import { ref } from "vue";
4556
import { GeoJSON } from "ol/format";
57+
import type { DrawEvent } from "ol/interaction/Draw";
58+
import type { Feature } from "ol";
59+
import type { Geometry } from "ol/geom";
4660
4761
const map = ref("");
4862
const center = ref([-102.13121, 40.2436]);
@@ -93,12 +107,16 @@ const geojsonObject = {
93107
],
94108
};
95109
96-
const zones = ref([]);
110+
const zones = ref<Feature<Geometry>[]>([]);
97111
98-
const drawend = (event) => {
112+
const drawend = (event: DrawEvent) => {
99113
zones.value.push(event.feature);
100114
drawEnabled.value = false;
101115
};
102116
117+
const log = (eventType: string, event: unknown) => {
118+
console.log(eventType, event);
119+
};
120+
103121
zones.value = new GeoJSON().readFeatures(geojsonObject);
104122
</script>

0 commit comments

Comments
 (0)