OSM.i18n.enableFallback = true;
window.onload = function () {
- const args = Object.fromEntries(new URLSearchParams(location.search));
+ const args = new URLSearchParams(location.search);
const options = {
mapnik: {
map.attributionControl.setPrefix("");
map.removeControl(map.attributionControl);
- const isDarkTheme = args.theme === "dark" || (args.theme !== "light" && window.matchMedia("(prefers-color-scheme: dark)").matches);
+ const isDarkTheme = args.get("theme") === "dark" || (args.get("theme") !== "light" && window.matchMedia("(prefers-color-scheme: dark)").matches);
const layers = <%= MapLayers::embed_definitions("config/layers.yml").to_json %>;
- const layerId = (args.layer || "").replaceAll(" ", "");
+ const layerId = (args.get("layer") || "").replaceAll(" ", "");
const layerConfig = layers[layerId] || layers.mapnik;
const layer = (isDarkTheme && layerConfig.leafletOsmDarkId) || layerConfig.leafletOsmId;
new L.OSM[layer]({ apikey: layerConfig.apikey, ...options[layerId] }).addTo(map);
- if (args.marker) {
- L.marker(args.marker.split(","), { icon: L.icon({
+ if (args.has("marker")) {
+ L.marker(args.get("marker").split(","), { icon: L.icon({
iconUrl: <%= asset_path('leaflet/dist/images/marker-icon.png').to_json %>,
iconSize: new L.Point(25, 41),
iconAnchor: new L.Point(12, 41),
}) }).addTo(map);
}
- const bbox = (args.bbox || "-180,-90,180,90").split(",");
+ const bbox = (args.get("bbox") || "-180,-90,180,90").split(",");
map.fitBounds([[bbox[1], bbox[0]], [bbox[3], bbox[2]]]);
map.addControl(new L.Control.OSMReportAProblem());
L.Control.OSMReportAProblem = L.Control.Attribution.extend({
options: {
position: "bottomright",
- prefix: `<a href="https://www.openstreetmap.org/fixthemap?lat={x}&lon={y}&zoom={z}" target="_blank">${OSM.i18n.t("javascripts.embed.report_problem")}</a>`
+ prefix: `<a href="/fixthemap?lat={x}&lon={y}&zoom={z}" target="_blank">${OSM.i18n.t("javascripts.embed.report_problem")}</a>`
},
onAdd: function (map) {