- if (hashParams.background) params.set("background", hashParams.background);
- if (hashParams.comment) params.set("comment", hashParams.comment);
- if (hashParams.disable_features) params.set("disable_features", hashParams.disable_features);
- if (hashParams.hashtags) params.set("hashtags", hashParams.hashtags);
- if (hashParams.locale) params.set("locale", hashParams.locale);
- if (hashParams.maprules) params.set("maprules", hashParams.maprules);
- if (hashParams.offset) params.set("offset", hashParams.offset);
- if (hashParams.photo) params.set("photo", hashParams.photo);
- if (hashParams.photo_dates) params.set("photo_dates", hashParams.photo_dates);
- if (hashParams.photo_overlay) params.set("photo_overlay", hashParams.photo_overlay);
- if (hashParams.photo_username) params.set("photo_username", hashParams.photo_username);
- if (hashParams.presets) params.set("presets", hashParams.presets);
- if (hashParams.source) params.set("source", hashParams.source);
- if (hashParams.validationDisable) params.set("validationDisable", hashParams.validationDisable);
- if (hashParams.validationWarning) params.set("validationWarning", hashParams.validationWarning);
- if (hashParams.validationError) params.set("validationError", hashParams.validationError);
- if (hashParams.walkthrough) params.set("walkthrough", hashParams.walkthrough);
-
- if (id.data("gpx")) {
- params.set("gpx", id.data("gpx"));
- } else if (hashParams.gpx) {
- params.set("gpx", hashParams.gpx);
- }
+ if (!idData.configured) {
+ // eslint-disable-next-line no-alert
+ alert(OSM.i18n.t("site.edit.id_not_configured"));
+ return;
+ }
+
+ const hash = location.hash.substring(1);
+ const hashParams = hash ? OSM.params(hash) : {};
+ const hashArgs = OSM.parseHash(location.hash);
+ const mapParams = OSM.mapParams();
+ const params = new URLSearchParams();
+ let zoom, lat, lon;
+
+ if (idData.lat && idData.lon) {
+ ({ zoom, lat, lon } = idData);
+ } else if (!mapParams.object) {
+ ({ zoom, lat, lon } = mapParams);
+ }
+ if (mapParams.object) {
+ params.set("id", mapParams.object.type + "/" + mapParams.object.id);
+ if (hashArgs.center) ({ zoom, center: { lat, lng: lon } } = hashArgs);
+ }
+ if (lat && lon) params.set("map", [zoom || 17, lat, lon].join("/"));