Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Eric Duminil
RegionChooser
Commits
e99b059a
Commit
e99b059a
authored
Oct 24, 2025
by
Eric Duminil
Browse files
Adding LayerSwitcher
parent
2b3920c3
Changes
4
Expand all
Hide whitespace changes
Inline
Side-by-side
src/main/resources/eu/simstadt/regionchooser/website/index.html
View file @
e99b059a
...
@@ -16,7 +16,9 @@
...
@@ -16,7 +16,9 @@
<script
type=
"text/javascript"
src=
"script/jquery-1.4.2.min.js"
></script>
<script
type=
"text/javascript"
src=
"script/jquery-1.4.2.min.js"
></script>
<!-- OpenLayers v3.4.0. API doc : https://geoadmin.github.io/ol3/apidoc/ -->
<!-- OpenLayers v3.4.0. API doc : https://geoadmin.github.io/ol3/apidoc/ -->
<script
src=
"script/ol.js"
type=
"text/javascript"
></script>
<script
src=
"script/ol.js"
type=
"text/javascript"
></script>
<script
src=
"script/ol-layerswitcher.js"
></script>
<link
rel=
"stylesheet"
href=
"style/ol.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"style/ol.css"
type=
"text/css"
/>
<link
rel=
"stylesheet"
href=
"style/ol-layerswitcher.css"
type=
"text/css"
/>
<script
src=
"script/turf.js"
type=
"text/javascript"
></script>
<script
src=
"script/turf.js"
type=
"text/javascript"
></script>
<script
src=
"script/every_epsg.js"
type=
"text/javascript"
></script>
<script
src=
"script/every_epsg.js"
type=
"text/javascript"
></script>
</head>
</head>
...
...
src/main/resources/eu/simstadt/regionchooser/website/script/ol-layerswitcher.js
0 → 100644
View file @
e99b059a
This diff is collapsed.
Click to expand it.
src/main/resources/eu/simstadt/regionchooser/website/script/simstadt_openlayers.js
View file @
e99b059a
...
@@ -25,7 +25,30 @@ const regionChooser = (function () {
...
@@ -25,7 +25,30 @@ const regionChooser = (function () {
var
osm_layer
=
new
ol
.
layer
.
Tile
({
var
osm_layer
=
new
ol
.
layer
.
Tile
({
// NOTE: when set to "anonymous" (the default), it could lead to the Browser not displaying any map
// NOTE: when set to "anonymous" (the default), it could lead to the Browser not displaying any map
source
:
new
ol
.
source
.
OSM
({
crossOrigin
:
null
})
source
:
new
ol
.
source
.
OSM
({
crossOrigin
:
null
}),
title
:
"
OpenStreetMap
"
,
type
:
'
base
'
});
var
arcgis_terrain
=
new
ol
.
layer
.
Tile
({
source
:
new
ol
.
source
.
XYZ
({
attributions
:
""
,
url
:
'
https://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer/tile/{z}/{y}/{x}
'
,
}),
title
:
"
Terrain
"
,
type
:
'
base
'
,
visible
:
false
,
});
var
arcgis_satellite
=
new
ol
.
layer
.
Tile
({
// TODO: Change polygon color when selected
source
:
new
ol
.
source
.
XYZ
({
attributions
:
""
,
url
:
'
https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}
'
,
}),
title
:
"
Satellite
"
,
type
:
'
base
'
,
visible
:
false
,
});
});
var
kml_source
=
utils
.
read_kml
(
fromJavaFX
?
undefined
:
'
data/citygml_hulls.kml
'
);
var
kml_source
=
utils
.
read_kml
(
fromJavaFX
?
undefined
:
'
data/citygml_hulls.kml
'
);
...
@@ -59,11 +82,14 @@ const regionChooser = (function () {
...
@@ -59,11 +82,14 @@ const regionChooser = (function () {
var
map
=
new
ol
.
Map
({
var
map
=
new
ol
.
Map
({
target
:
'
map
'
,
target
:
'
map
'
,
layers
:
[
osm_layer
,
kml_layer
,
intersections_layer
],
layers
:
[
osm_layer
,
arcgis_satellite
,
arcgis_terrain
,
kml_layer
,
intersections_layer
],
interactions
:
ol
.
interaction
.
defaults
({
interactions
:
ol
.
interaction
.
defaults
({
keyboard
:
true
keyboard
:
true
})
})
});
});
const
layerSwitcher
=
new
LayerSwitcher
();
map
.
addControl
(
layerSwitcher
);
const
geoJsonFormat
=
new
ol
.
format
.
GeoJSON
();
const
geoJsonFormat
=
new
ol
.
format
.
GeoJSON
();
const
kmlFormat
=
new
ol
.
format
.
KML
({
extractStyles
:
false
});
const
kmlFormat
=
new
ol
.
format
.
KML
({
extractStyles
:
false
});
...
...
src/main/resources/eu/simstadt/regionchooser/website/style/ol-layerswitcher.css
0 → 100644
View file @
e99b059a
.layer-switcher
{
position
:
absolute
;
top
:
3.5em
;
right
:
0.5em
;
text-align
:
left
;
}
.layer-switcher
.panel
{
margin
:
0
;
border
:
4px
solid
#eee
;
border-radius
:
4px
;
background-color
:
white
;
display
:
none
;
max-height
:
inherit
;
height
:
100%
;
box-sizing
:
border-box
;
overflow-y
:
auto
;
}
.layer-switcher
button
{
float
:
right
;
z-index
:
1
;
width
:
38px
;
height
:
38px
;
background-image
:
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAACE1BMVEX///8A//8AgICA//8AVVVAQID///8rVVVJtttgv98nTmJ2xNgkW1ttyNsmWWZmzNZYxM4gWGgeU2JmzNNr0N1Rwc0eU2VXxdEhV2JqytQeVmMhVmNoydUfVGUgVGQfVGQfVmVqy9hqy9dWw9AfVWRpydVry9YhVmMgVGNUw9BrytchVWRexdGw294gVWQgVmUhVWPd4N6HoaZsy9cfVmQgVGRrytZsy9cgVWQgVWMgVWRsy9YfVWNsy9YgVWVty9YgVWVry9UgVWRsy9Zsy9UfVWRsy9YgVWVty9YgVWRty9Vsy9aM09sgVWRTws/AzM0gVWRtzNYgVWRuy9Zsy9cgVWRGcHxty9bb5ORbxdEgVWRty9bn6OZTws9mydRfxtLX3Nva5eRix9NFcXxOd4JPeINQeIMiVmVUws9Vws9Vw9BXw9BYxNBaxNBbxNBcxdJexdElWWgmWmhjyNRlx9IqXGtoipNpytVqytVryNNrytZsjZUuX210k5t1y9R2zNR3y9V4lp57zth9zdaAnKOGoaeK0NiNpquV09mesrag1tuitbmj1tuj19uktrqr2d2svcCu2d2xwMO63N+7x8nA3uDC3uDFz9DK4eHL4eLN4eIyYnDX5OM5Z3Tb397e4uDf4uHf5uXi5ePi5+Xj5+Xk5+Xm5+Xm6OY6aHXQ19fT4+NfhI1Ww89gx9Nhx9Nsy9ZWw9Dpj2abAAAAWnRSTlMAAQICAwQEBgcIDQ0ODhQZGiAiIyYpKywvNTs+QklPUlNUWWJjaGt0dnd+hIWFh4mNjZCSm6CpsbW2t7nDzNDT1dje5efr7PHy9PT29/j4+Pn5+vr8/f39/f6DPtKwAAABTklEQVR4Xr3QVWPbMBSAUTVFZmZmhhSXMjNvkhwqMzMzMzPDeD+xASvObKePPa+ffHVl8PlsnE0+qPpBuQjVJjno6pZpSKXYl7/bZyFaQxhf98hHDKEppwdWIW1frFnrxSOWHFfWesSEWC6R/P4zOFrix3TzDFLlXRTR8c0fEEJ1/itpo7SVO9Jdr1DVxZ0USyjZsEY5vZfiiAC0UoTGOrm9PZLuRl8X+Dq1HQtoFbJZbv61i+Poblh/97TC7n0neCcK0ETNUrz1/xPHf+DNAW9Ac6t8O8WH3Vp98f5lCaYKAOFZMLyHL4Y0fe319idMNgMMp+zWVSybUed/+/h7I4wRAG1W6XDy4XmjR9HnzvDRZXUAYDFOhC1S/Hh+fIXxen+eO+AKqbs+wAo30zDTDvDxKoJN88sjUzDFAvBzEUGFsnADoIvAJzoh2BZ8sner+Ke/vwECuQAAAABJRU5ErkJggg==')
/*logo.png*/
;
background-repeat
:
no-repeat
;
background-position
:
2px
;
background-color
:
white
;
color
:
black
;
border
:
none
;
}
.layer-switcher
button
:focus
,
.layer-switcher
button
:hover
{
background-color
:
white
;
}
.layer-switcher.shown
{
overflow-y
:
hidden
;
display
:
flex
;
flex-direction
:
column
;
max-height
:
calc
(
100%
-
5.5em
);
}
.layer-switcher.shown.ol-control
{
background-color
:
transparent
;
}
.layer-switcher.shown.ol-control
:hover
{
background-color
:
transparent
;
}
.layer-switcher.shown
.panel
{
display
:
block
;
}
.layer-switcher.shown
button
{
display
:
none
;
}
.layer-switcher.shown.layer-switcher-activation-mode-click
>
button
{
display
:
block
;
background-image
:
unset
;
right
:
2px
;
position
:
absolute
;
background-color
:
#eee
;
margin
:
1px
;
}
.layer-switcher.shown
button
:focus
,
.layer-switcher.shown
button
:hover
{
background-color
:
#fafafa
;
}
.layer-switcher
ul
{
list-style
:
none
;
margin
:
1.6em
0.4em
;
padding-left
:
0
;
}
.layer-switcher
ul
ul
{
padding-left
:
1.2em
;
margin
:
0.1em
0
0
0
;
}
.layer-switcher
li
.group
+
li
.group
{
margin-top
:
0.4em
;
}
.layer-switcher
li
.group
+
li
.layer-switcher-base-group
{
}
.layer-switcher
li
.group
>
label
{
font-weight
:
bold
;
}
.layer-switcher.layer-switcher-group-select-style-none
li
.group
>
label
{
padding-left
:
1.2em
;
}
.layer-switcher
li
{
position
:
relative
;
margin-top
:
0.3em
;
}
.layer-switcher
li
input
{
position
:
absolute
;
left
:
1.2em
;
height
:
1em
;
width
:
1em
;
font-size
:
1em
;
}
.layer-switcher
li
label
{
padding-left
:
2.7em
;
padding-right
:
1.2em
;
display
:
inline-block
;
margin-top
:
1px
;
}
.layer-switcher
label
.disabled
{
opacity
:
0.4
;
}
.layer-switcher
input
{
margin
:
0px
;
}
.layer-switcher.touch
::-webkit-scrollbar
{
width
:
4px
;
}
.layer-switcher.touch
::-webkit-scrollbar-track
{
-webkit-box-shadow
:
inset
0
0
6px
rgba
(
0
,
0
,
0
,
0.3
);
border-radius
:
10px
;
}
.layer-switcher.touch
::-webkit-scrollbar-thumb
{
border-radius
:
10px
;
-webkit-box-shadow
:
inset
0
0
6px
rgba
(
0
,
0
,
0
,
0.5
);
}
li
.layer-switcher-base-group
>
label
{
padding-left
:
1.2em
;
}
.layer-switcher
.group
button
{
position
:
absolute
;
left
:
0
;
display
:
inline-block
;
vertical-align
:
top
;
float
:
none
;
font-size
:
1em
;
width
:
1em
;
height
:
1em
;
margin
:
0
;
background-position
:
center
2px
;
background-image
:
url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAW0lEQVR4nGNgGAWMyBwXFxcGBgaGeii3EU0tXHzPnj1wQRYsihqQ+I0ExDEMQAYNONgoAN0AmMkNaDSyQSheY8JiaCMOGzE04zIAmyFYNTMw4A+DRhzsUUBtAADw4BCeIZkGdwAAAABJRU5ErkJggg==')
;
-webkit-transition
:
-webkit-transform
0.2s
ease-in-out
;
-ms-transition
:
-ms-transform
0.2s
ease-in-out
;
transition
:
transform
0.2s
ease-in-out
;
}
.layer-switcher
.group.layer-switcher-close
button
{
transform
:
rotate
(
-90deg
);
-webkit-transform
:
rotate
(
-90deg
);
}
.layer-switcher
.group.layer-switcher-fold.layer-switcher-close
>
ul
{
overflow
:
hidden
;
height
:
0
;
}
/*layerswitcher on the right*/
.layer-switcher.shown.layer-switcher-activation-mode-click
{
padding-left
:
34px
;
}
.layer-switcher.shown.layer-switcher-activation-mode-click
>
button
{
left
:
0
;
border-right
:
0
;
}
/*layerswitcher on the left*/
/*
.layer-switcher.shown.layer-switcher-activation-mode-click {
padding-right: 34px;
}
.layer-switcher.shown.layer-switcher-activation-mode-click > button {
right: 0;
border-left: 0;
}
*/
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment