Allow map layers to specify an alternate tile set for dark mode

This commit is contained in:
Marwin Hochfelsner 2025-01-16 21:16:14 +01:00 committed by Tom Hughes
parent 8312ddfe0c
commit 01d8dba8ce

View file

@ -32,6 +32,8 @@ L.OSM.Map = L.Map.extend({
layerOptions.apikey = OSM[value];
} else if (property === "leafletOsmId") {
layerConstructor = L.OSM[value];
} else if (property === "leafletOsmDarkId" && OSM.isDarkMap() && L.OSM[value]) {
layerConstructor = L.OSM[value];
} else {
layerOptions[property] = value;
}
@ -386,6 +388,14 @@ L.extend(L.Icon.Default.prototype, {
}
});
OSM.isDarkMap = function () {
var mapTheme = $("body").attr("data-map-theme");
if (mapTheme) return mapTheme === "dark";
var siteTheme = $("html").attr("data-bs-theme");
if (siteTheme) return siteTheme === "dark";
return window.matchMedia("(prefers-color-scheme: dark)").matches;
};
OSM.getUserIcon = function (url) {
return L.icon({
iconUrl: url || OSM.MARKER_RED,