From ed10f0d3042b6334233bbbb2fac5f0b131442357 Mon Sep 17 00:00:00 2001 From: Daniel Kipp Date: Tue, 10 Nov 2026 14:11:48 +0100 Subject: [PATCH] [FIX] Maps: 48708: Use configured tile servers in OpenLayers map The tile server setting was passed to the JS but never evaluated, so the default OSM tiles were always used. Use tile.openstreetmap.org as default tile server, as the a/b/c subdomains are no longer recommended by OSM (https://github.com/openstreetmap/operations/issues/737) --- components/ILIAS/Maps/classes/class.ilMapUtil.php | 2 +- components/ILIAS/Maps/js/src/ServiceOpenLayers.js | 11 ++++++++--- components/ILIAS/Maps/resources/ServiceOpenLayers.js | 11 ++++++++--- 3 files changed, 17 insertions(+), 7 deletions(-) diff --git a/components/ILIAS/Maps/classes/class.ilMapUtil.php b/components/ILIAS/Maps/classes/class.ilMapUtil.php index e54925f2fb82..137a687c4d1c 100755 --- a/components/ILIAS/Maps/classes/class.ilMapUtil.php +++ b/components/ILIAS/Maps/classes/class.ilMapUtil.php @@ -20,7 +20,7 @@ class ilMapUtil { - public const DEFAULT_TILE = "a.tile.openstreetmap.org b.tile.openstreetmap.org c.tile.openstreetmap.org"; + public const DEFAULT_TILE = "tile.openstreetmap.org"; public const DEFAULT_GEOLOCATION = null; public static ?ilSetting $_settings = null; diff --git a/components/ILIAS/Maps/js/src/ServiceOpenLayers.js b/components/ILIAS/Maps/js/src/ServiceOpenLayers.js index aef80149d619..a0703e6b312e 100755 --- a/components/ILIAS/Maps/js/src/ServiceOpenLayers.js +++ b/components/ILIAS/Maps/js/src/ServiceOpenLayers.js @@ -52,13 +52,14 @@ export default class ServiceOpenLayers { let zoom = map[2]; let central_marker = map[3]; let replace_marker = map[5]; + let tile_servers = map[6]; let geo = map[7]; let pos = this.posToOSM([map[1], map[0]]); this.geolocationURL = geo; this.initView(id, pos, zoom); - this.initMap(id, replace_marker); + this.initMap(id, replace_marker, tile_servers); this.initUserMarkers(id, pos, replace_marker, central_marker); } } @@ -92,14 +93,18 @@ export default class ServiceOpenLayers { * * @param {string} id * @param {boolean} replace_marker + * @param {array} tile_servers * @return {void} */ - initMap(id, replace_marker) { + initMap(id, replace_marker, tile_servers) { + let source = new OSM(); + source.setUrls(tile_servers.map((server) => 'https://' + server + '/{z}/{x}/{y}.png')); + this.map = new OLMap({ layers: [ new TileLayer({ preload: 4, - source: new OSM() + source: source }), ], target: id, diff --git a/components/ILIAS/Maps/resources/ServiceOpenLayers.js b/components/ILIAS/Maps/resources/ServiceOpenLayers.js index 119025f939c4..d4e599ec2d37 100644 --- a/components/ILIAS/Maps/resources/ServiceOpenLayers.js +++ b/components/ILIAS/Maps/resources/ServiceOpenLayers.js @@ -21234,13 +21234,14 @@ class ServiceOpenLayers { let zoom = map[2]; let central_marker = map[3]; let replace_marker = map[5]; + let tile_servers = map[6]; let geo = map[7]; let pos = this.posToOSM([map[1], map[0]]); this.geolocationURL = geo; this.initView(id, pos, zoom); - this.initMap(id, replace_marker); + this.initMap(id, replace_marker, tile_servers); this.initUserMarkers(id, pos, replace_marker, central_marker); } } @@ -21274,14 +21275,18 @@ class ServiceOpenLayers { * * @param {string} id * @param {boolean} replace_marker + * @param {array} tile_servers * @return {void} */ - initMap(id, replace_marker) { + initMap(id, replace_marker, tile_servers) { + let source = new OSM(); + source.setUrls(tile_servers.map((server) => 'https://' + server + '/{z}/{x}/{y}.png')); + this.map = new OLMap({ layers: [ new TileLayer({ preload: 4, - source: new OSM() + source: source }), ], target: id,