X-Git-Url: https://git.openstreetmap.org./rails.git/blobdiff_plain/75438093ee64a3481cd9f1bca36a2881e3640b75..22761a9d1f1f0628971d607f14bbfa7f1f19ce94:/app/assets/javascripts/index/query.js
diff --git a/app/assets/javascripts/index/query.js b/app/assets/javascripts/index/query.js
index 313bd1cc0..672f650fa 100644
--- a/app/assets/javascripts/index/query.js
+++ b/app/assets/javascripts/index/query.js
@@ -1,4 +1,3 @@
-//= require jquery-simulate/jquery.simulate
//= require qs/dist/qs
OSM.Query = function (map) {
@@ -52,23 +51,8 @@ OSM.Query = function (map) {
}
$("#sidebar_content")
- .on("mouseover", ".query-results li.query-result", showResultGeometry)
- .on("mouseout", ".query-results li.query-result", hideResultGeometry)
- .on("mousedown", ".query-results li.query-result", function () {
- var moved = false;
- $(this).one("click", function (e) {
- if (!moved) {
- var geometry = $(this).data("geometry");
- if (geometry) map.removeLayer(geometry);
-
- if (!$(e.target).is("a")) {
- $(this).find("a").simulate("click", e);
- }
- }
- }).one("mousemove", function () {
- moved = true;
- });
- });
+ .on("mouseover", ".query-results a", showResultGeometry)
+ .on("mouseout", ".query-results a", hideResultGeometry);
function interestingFeature(feature) {
if (feature.tags) {
@@ -216,13 +200,14 @@ OSM.Query = function (map) {
if (interestingFeature(element)) {
var $li = $("
")
- .addClass("query-result list-group-item list-group-item-action")
- .data("geometry", featureGeometry(element))
+ .addClass("list-group-item list-group-item-action")
.text(featurePrefix(element) + " ")
.appendTo($ul);
$("")
+ .addClass("stretched-link")
.attr("href", "/" + element.type + "/" + element.id)
+ .data("geometry", featureGeometry(element))
.text(featureName(element))
.appendTo($li);
}
@@ -230,14 +215,14 @@ OSM.Query = function (map) {
if (results.remark) {
$("")
- .addClass("query-result list-group-item list-group-item-action")
+ .addClass("list-group-item")
.text(I18n.t("javascripts.query.error", { server: url, error: results.remark }))
.appendTo($ul);
}
if ($ul.find("li").length === 0) {
$("")
- .addClass("query-result list-group-item list-group-item-action")
+ .addClass("list-group-item")
.text(I18n.t("javascripts.query.nothing_found"))
.appendTo($ul);
}
@@ -246,7 +231,7 @@ OSM.Query = function (map) {
$section.find(".loader").hide();
$("")
- .addClass("query-result list-group-item list-group-item-action")
+ .addClass("list-group-item")
.text(I18n.t("javascripts.query." + status, { server: url, error: error }))
.appendTo($ul);
}
@@ -268,9 +253,9 @@ OSM.Query = function (map) {
* To find nearby objects we ask overpass for the union of the
* following sets:
*
- * node(around:,,lng>)
- * way(around:,,lng>)
- * relation(around:,,lng>)
+ * node(around:,,)
+ * way(around:,,)
+ * relation(around:,,)
*
* to find enclosing objects we first find all the enclosing areas:
*
@@ -287,47 +272,36 @@ OSM.Query = function (map) {
function queryOverpass(lat, lng) {
var latlng = L.latLng(lat, lng).wrap(),
bounds = map.getBounds().wrap(),
- precision = OSM.zoomPrecision(map.getZoom()),
- bbox = bounds.getSouth().toFixed(precision) + "," +
- bounds.getWest().toFixed(precision) + "," +
- bounds.getNorth().toFixed(precision) + "," +
- bounds.getEast().toFixed(precision),
- radius = 10 * Math.pow(1.5, 19 - map.getZoom()),
- around = "around:" + radius + "," + lat + "," + lng,
- nodes = "node(" + around + ")",
- ways = "way(" + around + ")",
- relations = "relation(" + around + ")",
- nearby = "(" + nodes + ";" + ways + ";);out tags geom(" + bbox + ");" + relations + ";out geom(" + bbox + ");",
- isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids geom(" + bbox + ");relation(pivot.a);out tags bb;";
+ zoom = map.getZoom(),
+ bbox = [bounds.getSouthWest(), bounds.getNorthEast()]
+ .map(c => OSM.cropLocation(c, zoom))
+ .join(),
+ geombbox = "geom(" + bbox + ");",
+ radius = 10 * Math.pow(1.5, 19 - zoom),
+ around = "(around:" + radius + "," + lat + "," + lng + ")",
+ nodes = "node" + around,
+ ways = "way" + around,
+ relations = "relation" + around,
+ nearby = "(" + nodes + ";" + ways + ";);out tags " + geombbox + relations + ";out " + geombbox,
+ isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids " + geombbox + "relation(pivot.a);out tags bb;";
$("#sidebar_content .query-intro")
.hide();
if (marker) map.removeLayer(marker);
- marker = L.circle(latlng, radius, featureStyle).addTo(map);
-
- $(document).everyTime(75, "fadeQueryMarker", function (i) {
- if (i === 10) {
- map.removeLayer(marker);
- } else {
- marker.setStyle({
- opacity: 1 - (i * 0.1),
- fillOpacity: 0.5 - (i * 0.05)
- });
- }
- }, 10);
+ marker = L.circle(latlng, Object.assign({
+ radius: radius,
+ className: "query-marker"
+ }, featureStyle)).addTo(map);
runQuery(latlng, radius, nearby, $("#query-nearby"), false);
runQuery(latlng, radius, isin, $("#query-isin"), true, compareSize);
}
function clickHandler(e) {
- var precision = OSM.zoomPrecision(map.getZoom()),
- latlng = e.latlng.wrap(),
- lat = latlng.lat.toFixed(precision),
- lng = latlng.lng.toFixed(precision);
+ const [lat, lon] = OSM.cropLocation(e.latlng, map.getZoom());
- OSM.router.route("/query?lat=" + lat + "&lon=" + lng);
+ OSM.router.route("/query?" + Qs.stringify({ lat, lon }));
}
function enableQueryMode() {
@@ -367,7 +341,7 @@ OSM.Query = function (map) {
page.unload = function (sameController) {
if (!sameController) {
disableQueryMode();
- $("#sidebar_content .query-results li.query-result.selected").each(hideResultGeometry);
+ $("#sidebar_content .query-results a.selected").each(hideResultGeometry);
}
};