From: Anton Khorev Date: Mon, 31 Mar 2025 17:01:16 +0000 (+0300) Subject: Add viewbox param to Nominatim link in search results X-Git-Tag: live~68^2 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/8b671b128372ddc8142e1b71be0a8c04168faacb?hp=--cc Add viewbox param to Nominatim link in search results --- 8b671b128372ddc8142e1b71be0a8c04168faacb diff --git a/app/assets/javascripts/index/search.js b/app/assets/javascripts/index/search.js index 4c1213320..05a4c449a 100644 --- a/app/assets/javascripts/index/search.js +++ b/app/assets/javascripts/index/search.js @@ -18,9 +18,15 @@ OSM.Search = function (map) { $(".search_form").on("submit", function (e) { e.preventDefault(); $("header").addClass("closed"); - const query = $(this).find("input[name=query]").val(); - let search = "/"; - if (query) search = "/search?" + new URLSearchParams({ query }); + const params = new URLSearchParams({ + query: this.elements.query.value, + zoom: map.getZoom(), + minlon: map.getBounds().getWest(), + minlat: map.getBounds().getSouth(), + maxlon: map.getBounds().getEast(), + maxlat: map.getBounds().getNorth() + }); + const search = params.get("query") ? `/search?${params}` : "/"; OSM.router.route(search + OSM.formatHash(map)); }); @@ -118,14 +124,7 @@ OSM.Search = function (map) { const entry = $(this); fetch(entry.data("href"), { method: "POST", - body: new URLSearchParams({ - zoom: map.getZoom(), - minlon: map.getBounds().getWest(), - minlat: map.getBounds().getSouth(), - maxlon: map.getBounds().getEast(), - maxlat: map.getBounds().getNorth(), - ...OSM.csrf - }) + body: new URLSearchParams(OSM.csrf) }) .then(response => response.text()) .then(function (html) { diff --git a/test/system/search_test.rb b/test/system/search_test.rb index ced1e1beb..992d0b800 100644 --- a/test/system/search_test.rb +++ b/test/system/search_test.rb @@ -29,4 +29,28 @@ class SearchTest < ApplicationSystemTestCase assert_field "Search", :with => "4.321, 9.876" end + + test "search adds viewbox param to Nominatim link" do + stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/search\?}) + .to_return(:status => 404) + + visit "/" + + fill_in "query", :with => "paris" + click_on "Go" + + assert_link "OpenStreetMap Nominatim", :href => /&viewbox=/ + end + + test "search adds zoom param to reverse Nominatim link" do + stub_request(:get, %r{^https://nominatim\.openstreetmap\.org/reverse\?}) + .to_return(:status => 404) + + visit "/#map=7/1.234/6.789" + + fill_in "query", :with => "60 30" + click_on "Go" + + assert_link "OpenStreetMap Nominatim", :href => /&zoom=7/ + end end