- if (hashParams.background) params.background = hashParams.background;
- if (hashParams.comment) params.comment = hashParams.comment;
- if (hashParams.disable_features) params.disable_features = hashParams.disable_features;
- if (hashParams.hashtags) params.hashtags = hashParams.hashtags;
- if (hashParams.locale) params.locale = hashParams.locale;
- if (hashParams.maprules) params.maprules = hashParams.maprules;
- if (hashParams.offset) params.offset = hashParams.offset;
- if (hashParams.photo) params.photo = hashParams.photo;
- if (hashParams.photo_dates) params.photo_dates = hashParams.photo_dates;
- if (hashParams.photo_overlay) params.photo_overlay = hashParams.photo_overlay;
- if (hashParams.photo_username) params.photo_username = hashParams.photo_username;
- if (hashParams.presets) params.presets = hashParams.presets;
- if (hashParams.source) params.source = hashParams.source;
- if (hashParams.validationDisable) params.validationDisable = hashParams.validationDisable;
- if (hashParams.validationWarning) params.validationWarning = hashParams.validationWarning;
- if (hashParams.validationError) params.validationError = hashParams.validationError;
- if (hashParams.walkthrough) params.walkthrough = hashParams.walkthrough;
-
- if (id.data("gpx")) {
- params.gpx = id.data("gpx");
- } else if (hashParams.gpx) {
- params.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("/"));