+ page.pushstate = page.popstate = function (path) {
+ const params = new URLSearchParams(path.substring(path.indexOf("?")));
+ if (params.has("query")) {
+ $(".search_form input[name=query]").val(params.get("query"));
+ $(".describe_location").hide();
+ } else if (params.has("lat") && params.has("lon")) {
+ $(".search_form input[name=query]").val(params.get("lat") + ", " + params.get("lon"));
+ $(".describe_location").hide();
+ }
+ OSM.loadSidebarContent(path, page.load);
+ };
+
+ page.load = function () {
+ $(".search_results_entry").each(function (index) {
+ var entry = $(this),
+ csrf_param = $("meta[name=csrf-param]").attr("content"),
+ csrf_token = $("meta[name=csrf-token]").attr("content"),
+ params = new URLSearchParams({
+ zoom: map.getZoom(),
+ minlon: map.getBounds().getWest(),
+ minlat: map.getBounds().getSouth(),
+ maxlon: map.getBounds().getEast(),
+ maxlat: map.getBounds().getNorth()
+ });
+ params.set(csrf_param, csrf_token);
+ fetch(entry.data("href"), {
+ method: "POST",
+ body: params
+ })
+ .then(response => response.text())
+ .then(function (html) {
+ entry.html(html);
+ // go to first result of first geocoder
+ if (index === 0) {
+ var firstResult = entry.find("*[data-lat][data-lon]:first").first();
+ if (firstResult.length) {
+ panToSearchResult(firstResult.data());
+ }
+ }
+ });