vue3-openlayers
Version:
OpenLayers Wrapper for Vue3
33 lines (32 loc) • 848 B
JavaScript
import { inject, computed, watch, onMounted, onUnmounted } from "vue";
import usePropsAsObjectProperties from "./usePropsAsObjectProperties.js";
function useGeometry(GeometryType, props) {
const feature = inject("feature");
const properties = usePropsAsObjectProperties(props);
const geometry = computed(() => {
const parameters = Object.values(properties);
return new GeometryType(
...parameters
);
});
watch(properties, () => {
feature?.value?.setGeometry(geometry.value);
feature?.value?.changed();
});
watch(
() => feature,
() => {
feature?.value?.setGeometry(geometry.value);
}
);
onMounted(() => {
feature?.value?.setGeometry(geometry.value);
});
onUnmounted(() => {
feature?.value?.setGeometry(void 0);
});
return geometry;
}
export {
useGeometry as default
};