Søg i Septima Widget K
Vue komponent
Brug Septima Widget direkte i din Vue 3-applikation med den officielle SeptimaWidget-komponent. Komponenten wrapper WidgetAPI og eksponerer instansen, så du har fuld adgang til alle metoder.
Installation
sh
npm install septima-widget-vueLive demo
Knapperne kalder setView() via den eksponerede widget-instans. "Registrér næste klik" viser, hvordan man lytter på events med on().
Kom i gang
vue
<script setup>
import { ref } from 'vue'
import SeptimaWidget from 'septima-widget-vue'
const mapRef = ref(null)
</script>
<template>
<div style="height: 500px">
<SeptimaWidget
ref="mapRef"
:config="{
map: {
view: { zoomLevel: 10, x: 724413, y: 6175985 },
layer: [{ namedlayer: '#septima_standard' }],
controls: [
{ search: { driver: [{ type: 'address', options: {} }] } }
]
}
}"
/>
</div>
</template>Config kan også angives som en URL til en JSON-fil:
vue
<SeptimaWidget config="https://example.com/config.json" />Props
config
- Type:
Object | String - Påkrævet: Ja
Konfigurationen til Septima Widget. Kan enten være et JavaScript-objekt eller en URL til en JSON-konfigurationsfil.
Når config ændres, kalder komponenten automatisk setConfig på den eksisterende instans.
Expose
Komponenten eksponerer widget-egenskaben, som er instansen af WidgetAPI.
widget
- Type:
WidgetAPI | null
WidgetAPI-instansen. Er null indtil komponenten er mounted. Brug ref til at få adgang til instansen:
vue
<script setup>
import { useTemplateRef } from 'vue'
import SeptimaWidget from 'septima-widget-vue'
const mapRef = useTemplateRef('mapRef')
function flyTo() {
mapRef.value?.widget?.setView({
x: 724413,
y: 6175985,
zoom: 14,
zoomStyle: 'slow'
})
}
function listenToClicks() {
mapRef.value?.widget?.on('mapclick', (event, scope, coordinate) => {
console.log('Klik ved', coordinate)
})
}
</script>
<template>
<div style="height: 500px">
<SeptimaWidget ref="mapRef" :config="config" />
</div>
<button @click="flyTo">Zoom til position</button>
</template>Se WidgetAPI-dokumentationen for en komplet oversigt over tilgængelige metoder og events.
TypeScript
Komponenten er skrevet i TypeScript og leveres med typedefinitioner. widget-egenskaben kan types via SeptimaWidgetExpose.
import { ref } from 'vue'
import SeptimaWidget, { type SeptimaWidgetExpose } from 'septima-widget-vue'
const mapRef = ref<InstanceType<typeof SeptimaWidget> | null>(null)
// widget er WidgetAPI | null
const w: SeptimaWidgetExpose['widget'] = mapRef.value?.widget ?? null