diff --git a/app.js b/app.js index d77b2a7..e37675a 100644 --- a/app.js +++ b/app.js @@ -10,9 +10,19 @@ const els = { parcelSearchForm: document.getElementById("parcel-search-form"), parcelSearchInput: document.getElementById("parcel-search-input"), parcelSearchStatus: document.getElementById("parcel-search-status"), + backgroundSelect: document.getElementById("background-select"), }; -const osmLayer = new ol.layer.Tile({ +const softBasemapLayer = new ol.layer.Tile({ + source: new ol.source.XYZ({ + url: "https://{a-d}.basemaps.cartocdn.com/light_nolabels/{z}/{x}/{y}.png", + attributions: + '© OpenStreetMap contributors © CARTO', + }), +}); + +const openStreetMapLayer = new ol.layer.Tile({ + visible: false, source: new ol.source.OSM(), }); @@ -46,7 +56,7 @@ const parcelSearchLayer = new ol.layer.Vector({ const map = new ol.Map({ target: "map", - layers: [osmLayer, wmsLayer, parcelSearchLayer], + layers: [softBasemapLayer, openStreetMapLayer, wmsLayer, parcelSearchLayer], view: new ol.View({ center: ol.proj.fromLonLat(DEFAULT_CENTER), zoom: 7, @@ -57,6 +67,7 @@ let availableLayers = []; let selectedLayers = []; els.parcelSearchForm.addEventListener("submit", searchParcela); +els.backgroundSelect.addEventListener("change", syncBackground); loadLayers(); @@ -281,3 +292,9 @@ function updateParcelSearchStatus(message, tone) { function escapeCqlLiteral(value) { return value.replaceAll("'", "''"); } + +function syncBackground() { + const useOpenStreetMap = els.backgroundSelect.value === "openstreetmap"; + softBasemapLayer.setVisible(!useOpenStreetMap); + openStreetMapLayer.setVisible(useOpenStreetMap); +} diff --git a/index.html b/index.html index 80973bb..247f77c 100644 --- a/index.html +++ b/index.html @@ -46,6 +46,19 @@ Loading published layers. + +
+
+

Background

+
+ +
diff --git a/styles.css b/styles.css index 876fc67..2588a49 100644 --- a/styles.css +++ b/styles.css @@ -93,6 +93,10 @@ form.panel { width: 100%; } +.background-selector { + margin-top: 16px; +} + label { display: flex; flex-direction: column; @@ -105,7 +109,8 @@ label span { font-weight: 600; } -input { +input, +select { width: 100%; padding: 12px 14px; border-radius: 14px; @@ -115,7 +120,8 @@ input { font: inherit; } -input:focus { +input:focus, +select:focus { outline: 2px solid rgba(31, 122, 98, 0.18); border-color: var(--accent); }