diff --git a/src/components/BBoxEntry.vue b/src/components/BBoxEntry.vue
new file mode 100644
index 000000000..c1e34c232
--- /dev/null
+++ b/src/components/BBoxEntry.vue
@@ -0,0 +1,156 @@
+
+
+
+
+
+
+
+ {{ sw_latitude < -90 || sw_latitude > 90 ?
+ $t('boundingBox.latitudeRangeError'):
+ $t('boundingBox.swLatitudeSizeError')
+ }}
+
+
+
+
+
+
+
+ {{ sw_longitude < -180 || sw_longitude > 180 ?
+ $t('boundingBox.longitudeRangeError'):
+ $t('boundingBox.swLongitudeSizeError')
+ }}
+
+
+
+
+
+
+
+
+
+ {{ ne_latitude < -90 || ne_latitude > 90 ?
+ $t('boundingBox.latitudeRangeError'):
+ $t('boundingBox.neLatitudeSizeError')
+ }}
+
+
+
+
+
+
+
+ {{ ne_longitude < -180 || ne_longitude > 180 ?
+ $t('boundingBox.longitudeRangeError'):
+ $t('boundingBox.neLongitudeSizeError')
+ }}
+
+
+
+
+
+
+
+
diff --git a/src/components/Map.vue b/src/components/Map.vue
index 5d522d215..a31462261 100644
--- a/src/components/Map.vue
+++ b/src/components/Map.vue
@@ -90,6 +90,10 @@ export default {
fitBoundsOnce: {
type: Boolean,
default: false
+ },
+ bbox: {
+ type: Array,
+ default: null,
}
},
data() {
@@ -419,11 +423,16 @@ export default {
minWidth: 20,
minHeight: 20,
minHorizontalSpacing: 20,
- minVerticalSpacing: 20
+ minVerticalSpacing: 20,
+ bbox: this.bbox,
});
- this.areaSelect.addTo(this.map);
+ this.areaSelect.addTo(this.map, this.bbox);
this.areaSelect.on("change", () => this.emitBounds());
- this.emitBounds();
+
+ // don't emit bounds on load if already known in order to avoid rounding box entries
+ if(!this.bbox) {
+ this.emitBounds();
+ }
},
emitBounds() {
this.$emit('bounds', this.areaSelect.getBounds());
diff --git a/src/components/SearchFilter.vue b/src/components/SearchFilter.vue
index c359eb8bc..335ed1516 100644
--- a/src/components/SearchFilter.vue
+++ b/src/components/SearchFilter.vue
@@ -27,8 +27,19 @@
- {{ $t('search.filterBySpatialExtent') }}
-
+ {{ $t('search.filterBySpatialExtent') }}
+
+
+
+
+
+
+
+
+
+
+
+
@@ -118,11 +129,12 @@