diff --git a/webapp/src/components/DFMapMarker.vue b/webapp/src/components/DFMapMarker.vue new file mode 100644 index 0000000..eaec4c9 --- /dev/null +++ b/webapp/src/components/DFMapMarker.vue @@ -0,0 +1,61 @@ + + + diff --git a/webapp/src/components/DFMapPopup.vue b/webapp/src/components/DFMapPopup.vue new file mode 100644 index 0000000..4ca113e --- /dev/null +++ b/webapp/src/components/DFMapPopup.vue @@ -0,0 +1,35 @@ + + + diff --git a/webapp/src/types.ts b/webapp/src/types.ts new file mode 100644 index 0000000..9731520 --- /dev/null +++ b/webapp/src/types.ts @@ -0,0 +1,7 @@ +export interface ALPR { + id: string; + lat: number; + lon: number; + tags: Record; + type: string; +}; diff --git a/webapp/src/views/HomeView.vue b/webapp/src/views/HomeView.vue index 31cda56..fa1e869 100644 --- a/webapp/src/views/HomeView.vue +++ b/webapp/src/views/HomeView.vue @@ -43,16 +43,7 @@ name="OpenStreetMap" /> - - -

Brand: {{ alpr.tags.brand || alpr.tags.operator || 'Unknown' }}

-

Faces: {{ degreesToCardinal(alpr.tags.direction) }} {{ alpr.tags.direction }}°

-
-
+
Loading Map @@ -70,6 +61,8 @@ import type { Ref } from 'vue'; import { BoundingBox } from '@/services/apiService'; import { getALPRs, geocodeQuery } from '@/services/apiService'; import { useDisplay } from 'vuetify'; +import DFMapMarker from '@/components/DFMapMarker.vue'; +import type { ALPR } from '@/types'; const zoom: Ref = ref(13); const center: Ref = ref(null); @@ -81,7 +74,7 @@ const { xs } = useDisplay(); const canRefreshMarkers = computed(() => zoom.value >= 10); -const alprsInView: Ref = ref([]); +const alprsInView: Ref = ref([]); const bboxForLastRequest: Ref = ref(null); function onSearch() { @@ -180,11 +173,6 @@ function updateMarkers() { }); } -function degreesToCardinal(degrees: number): string { - const cardinals = ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']; - return cardinals[Math.round(degrees / 45) % 8]; -} - onMounted(() => { const hash = router.currentRoute.value.hash; if (hash) {