diff --git a/frontend/src/components/Map.vue b/frontend/src/components/Map.vue
index 79dc7c7..6c1a807 100644
--- a/frontend/src/components/Map.vue
+++ b/frontend/src/components/Map.vue
@@ -423,13 +423,17 @@ export default {
         return
       }
 
-      start = this.map.getCoordinateFromPixel(start)
-      end = this.map.getCoordinateFromPixel(end)
+      const startPoint = this.map?.getCoordinateFromPixel(start)
+      const endPoint = this.map?.getCoordinateFromPixel(end)
+      if (!(startPoint && endPoint)) {
+        return
+      }
+
       const [startLon, startLat, endLon, endLat] = [
-        Math.min(start[0], end[0]),
-        Math.min(start[1], end[1]),
-        Math.max(start[0], end[0]),
-        Math.max(start[1], end[1]),
+        Math.min(startPoint[0], endPoint[0]),
+        Math.min(startPoint[1], endPoint[1]),
+        Math.max(startPoint[0], endPoint[0]),
+        Math.max(startPoint[1], endPoint[1]),
       ]
 
       this.locationQuery = {
diff --git a/frontend/src/components/MapSelectOverlay.vue b/frontend/src/components/MapSelectOverlay.vue
index a6fb20d..c5de0fc 100644
--- a/frontend/src/components/MapSelectOverlay.vue
+++ b/frontend/src/components/MapSelectOverlay.vue
@@ -38,7 +38,9 @@ export default {
       }
 
       const scaledCoords = [
+        // @ts-ignore
         this.scaledPointerCoordinates(...this.selectionBox[0]),
+        // @ts-ignore
         this.scaledPointerCoordinates(...this.selectionBox[1]),
       ]
 
@@ -71,7 +73,9 @@ export default {
     },
 
     scaledPointerCoordinates(x: number, y: number): number[] {
+      // @ts-ignore
       const offsetLeft = this.$refs.overlay?.getBoundingClientRect().left || 0
+      // @ts-ignore
       const offsetTop = this.$refs.overlay?.getBoundingClientRect().top || 0
 
       return [
@@ -80,8 +84,20 @@ export default {
       ]
     },
 
-    setSelectionBoxCoordinates(event: MouseEvent) {
-      const coords = [event.clientX, event.clientY]
+    getXY(event: MouseEvent | TouchEvent): number[] {
+      if (event instanceof MouseEvent) {
+        return [event.clientX, event.clientY]
+      }
+
+      if (event instanceof TouchEvent) {
+        return [event.touches[0].clientX, event.touches[0].clientY]
+      }
+
+      return []
+    },
+
+    setSelectionBoxCoordinates(event: MouseEvent | TouchEvent) {
+      const coords = this.getXY(event)
       let newBox = JSON.parse(JSON.stringify(this.selectionBox)) as number[][]
 
       if (newBox.length === 1 || !newBox[1]) {
@@ -94,13 +110,13 @@ export default {
       this.selectionBox = newBox
     },
 
-    onOverlayDragStart(event: MouseEvent) {
+    onOverlayDragStart(event: MouseEvent | TouchEvent) {
       this.selectionBox = []
       this.setSelectionBoxCoordinates(event)
       this.overlayDragging = true
     },
 
-    onOverlayDragEnd(event: MouseEvent) {
+    onOverlayDragEnd(event: MouseEvent | TouchEvent) {
       if (this.selectionBox.length < 1) {
         this.selectionBox = []
         return
@@ -117,14 +133,16 @@ export default {
         this.$emit(
           'select',
           [
+            // @ts-ignore
             this.scaledPointerCoordinates(...this.selectionBox[0]),
+            // @ts-ignore
             this.scaledPointerCoordinates(...this.selectionBox[1])
           ]
         )
       }
     },
 
-    onOverlayMove(event: MouseEvent) {
+    onOverlayMove(event: MouseEvent | TouchEvent) {
       if (!this.overlayDragging || this.selectionBox.length < 1) {
         return
       }
diff --git a/frontend/src/components/filter/Form.vue b/frontend/src/components/filter/Form.vue
index 61ddcba..2fd1572 100644
--- a/frontend/src/components/filter/Form.vue
+++ b/frontend/src/components/filter/Form.vue
@@ -254,12 +254,14 @@ export default {
     },
 
     initDateRange(value: LocationQuery) {
-      this.enableDateRange = !!(value.startDate && value.endDate)
+      this.enableDateRange = !!(value?.startDate && value?.endDate)
     },
   },
 
   mounted() {
-    this.initDateRange(this.value)
+    if (this.value) {
+      this.initDateRange(this.value)
+    }
   },
 
   watch: {
diff --git a/frontend/src/mixins/Dates.vue b/frontend/src/mixins/Dates.vue
index e23eaa4..c526090 100644
--- a/frontend/src/mixins/Dates.vue
+++ b/frontend/src/mixins/Dates.vue
@@ -22,7 +22,7 @@ export default {
       return new Date(Math.floor(date.getTime() / 60000) * 60000)
     },
 
-    toLocalString(date: Date | string | number | null): string {
+    toLocalString(date: Date | string | number | null | undefined): string {
       const d = this.normalizeDate(date)
       if (!d) {
         return ''
diff --git a/frontend/src/mixins/SelectionBox.vue b/frontend/src/mixins/SelectionBox.vue
index 104431d..d717dde 100644
--- a/frontend/src/mixins/SelectionBox.vue
+++ b/frontend/src/mixins/SelectionBox.vue
@@ -30,7 +30,9 @@ export default {
 
   methods: {
     scaledPointerCoordinates(event: MouseEvent): number[] {
+      // @ts-ignore
       const offsetLeft = this.$refs.overlay?.getBoundingClientRect().left || 0
+      // @ts-ignore
       const offsetTop = this.$refs.overlay?.getBoundingClientRect().top || 0
 
       return [
@@ -55,7 +57,6 @@ export default {
 
     onOverlayDragStart(event: MouseEvent) {
       this.setSelectionBoxCoordinates(event)
-      this.overlayDragging = true
     },
 
     onOverlayDragEnd(event: MouseEvent) {
@@ -70,12 +71,10 @@ export default {
       ) {
         this.selectionBox = []
       }
-
-      this.overlayDragging = false
     },
 
     onOverlayMove(event: MouseEvent) {
-      if (!this.overlayDragging || this.selectionBox.length < 1) {
+      if (this.selectionBox.length < 1) {
         return
       }
 
diff --git a/frontend/src/mixins/URLQueryHandler.vue b/frontend/src/mixins/URLQueryHandler.vue
index 10f8c4d..cab80ff 100644
--- a/frontend/src/mixins/URLQueryHandler.vue
+++ b/frontend/src/mixins/URLQueryHandler.vue
@@ -80,6 +80,7 @@ export default {
     $route(newRoute: { fullPath: string }, oldRoute: { fullPath: string }) {
       const oldQuery = this.parseQuery(oldRoute.fullPath)
       const newQuery = this.parseQuery(newRoute.fullPath)
+      // @ts-ignore
       if (this.isQueryChanged({oldValue: oldQuery, newValue: newQuery})) {
         this.query = newQuery
       }