+ $("#banner .btn-close").on("click", function (e) {
+ const cookieId = e.target.id;
+ $("#banner").hide();
+ e.preventDefault();
+ if (cookieId) {
+ Cookies.set(cookieId, "hide", { secure: true, expires: bannerExpiry, path: "/", samesite: "lax" });
+ }
+ });
+
+ if (OSM.MATOMO) {
+ map.on("baselayerchange overlayadd", function (e) {
+ if (e.layer.options) {
+ const goal = OSM.MATOMO.goals[e.layer.options.layerId];
+
+ if (goal) {
+ $("body").trigger("matomogoal", goal);
+ }
+ }
+ });
+ }
+
+ if (params.bounds) {
+ map.fitBounds(params.bounds);
+ } else {
+ map.setView([params.lat, params.lon], params.zoom);
+ }
+
+ if (params.marker) {
+ L.marker([params.mlat, params.mlon]).addTo(map);
+ }
+
+ function remoteEditHandler(bbox, object) {
+ const remoteEditHost = "http://127.0.0.1:8111",
+ osmHost = location.protocol + "//" + location.host,
+ query = new URLSearchParams({
+ left: bbox.getWest() - 0.0001,
+ top: bbox.getNorth() + 0.0001,
+ right: bbox.getEast() + 0.0001,
+ bottom: bbox.getSouth() - 0.0001
+ });
+
+ if (object && object.type !== "note") query.set("select", object.type + object.id); // can't select notes
+ sendRemoteEditCommand(remoteEditHost + "/load_and_zoom?" + query)
+ .then(() => {
+ if (object && object.type === "note") {
+ const noteQuery = new URLSearchParams({ url: osmHost + OSM.apiUrl(object) });
+ sendRemoteEditCommand(remoteEditHost + "/import?" + noteQuery);
+ }
+ })
+ .catch(() => {
+ // eslint-disable-next-line no-alert
+ alert(I18n.t("site.index.remote_failed"));
+ });
+
+ function sendRemoteEditCommand(url) {
+ return fetch(url, { mode: "no-cors", signal: AbortSignal.timeout(5000) });
+ }