From e10432260fd7078be6c8067225363f95f4d00638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Kr=C3=B6g?= Date: Sat, 16 Jul 2022 14:56:08 +0200 Subject: [PATCH] Cleanup scale-line example --- examples/scale-line.css | 3 ++ examples/scale-line.html | 16 +++++----- examples/scale-line.js | 63 ++++++++++++++-------------------------- 3 files changed, 33 insertions(+), 49 deletions(-) create mode 100644 examples/scale-line.css diff --git a/examples/scale-line.css b/examples/scale-line.css new file mode 100644 index 0000000000..03c39ff5d1 --- /dev/null +++ b/examples/scale-line.css @@ -0,0 +1,3 @@ +#scaleBarOptions { + display: none; +} diff --git a/examples/scale-line.html b/examples/scale-line.html index 923c69a09b..f31a77aca6 100644 --- a/examples/scale-line.html +++ b/examples/scale-line.html @@ -7,6 +7,7 @@ docs: > tags: "scale-line, openstreetmap" ---
+ + - +
+ - diff --git a/examples/scale-line.js b/examples/scale-line.js index d961b13d41..2f4af685c0 100644 --- a/examples/scale-line.js +++ b/examples/scale-line.js @@ -4,31 +4,30 @@ import TileLayer from '../src/ol/layer/Tile.js'; import View from '../src/ol/View.js'; import {ScaleLine, defaults as defaultControls} from '../src/ol/control.js'; +const scaleBarOptionsContainer = document.getElementById('scaleBarOptions'); const unitsSelect = document.getElementById('units'); const typeSelect = document.getElementById('type'); const stepsSelect = document.getElementById('steps'); const scaleTextCheckbox = document.getElementById('showScaleText'); -const showScaleTextDiv = document.getElementById('showScaleTextDiv'); -let scaleType = 'scaleline'; -let scaleBarSteps = 4; -let scaleBarText = true; let control; function scaleControl() { - if (scaleType === 'scaleline') { + if (typeSelect.value === 'scaleline') { control = new ScaleLine({ units: unitsSelect.value, }); - return control; + scaleBarOptionsContainer.style.display = 'none'; + } else { + control = new ScaleLine({ + units: unitsSelect.value, + bar: true, + steps: parseInt(stepsSelect.value, 10), + text: scaleTextCheckbox.checked, + minWidth: 140, + }); + scaleBarOptionsContainer.style.display = 'block'; } - control = new ScaleLine({ - units: unitsSelect.value, - bar: true, - steps: scaleBarSteps, - text: scaleBarText, - minWidth: 140, - }); return control; } const map = new Map({ @@ -45,34 +44,14 @@ const map = new Map({ }), }); -function onChange() { +function reconfigureScaleLine() { + map.removeControl(control); + map.addControl(scaleControl()); +} +function onChangeUnit() { control.setUnits(unitsSelect.value); } -function onChangeType() { - scaleType = typeSelect.value; - if (typeSelect.value === 'scalebar') { - stepsSelect.style.display = 'inline'; - showScaleTextDiv.style.display = 'inline'; - map.removeControl(control); - map.addControl(scaleControl()); - } else { - stepsSelect.style.display = 'none'; - showScaleTextDiv.style.display = 'none'; - map.removeControl(control); - map.addControl(scaleControl()); - } -} -function onChangeSteps() { - scaleBarSteps = parseInt(stepsSelect.value, 10); - map.removeControl(control); - map.addControl(scaleControl()); -} -function onChangeScaleText() { - scaleBarText = scaleTextCheckbox.checked; - map.removeControl(control); - map.addControl(scaleControl()); -} -unitsSelect.addEventListener('change', onChange); -typeSelect.addEventListener('change', onChangeType); -stepsSelect.addEventListener('change', onChangeSteps); -scaleTextCheckbox.addEventListener('change', onChangeScaleText); +unitsSelect.addEventListener('change', onChangeUnit); +typeSelect.addEventListener('change', reconfigureScaleLine); +stepsSelect.addEventListener('change', reconfigureScaleLine); +scaleTextCheckbox.addEventListener('change', reconfigureScaleLine);