summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
9f9ba18)
The bounding box returned by overpass for geom output is only
the bounds for the clipped geometry, so fetch the geometry and
the bounding box separately and merge them client side.
Fixes #1156
- function runQuery(latlng, radius, query, $section, compare) {
+ function runQuery(latlng, radius, query, $section, merge, compare) {
var $ul = $section.find("ul");
$ul.empty();
var $ul = $section.find("ul");
$ul.empty();
$section.find(".loader").stopTime("loading").hide();
$section.find(".loader").stopTime("loading").hide();
- if (compare) {
- elements = results.elements.sort(compare);
+ if (merge) {
+ elements = results.elements.reduce(function (hash, element) {
+ var key = element.type + element.id;
+ hash[key] = $.extend({}, hash[key], element);
+ return hash;
+ }, {});
+
+ elements = Object.keys(elements).map(function (key) {
+ return elements[key];
+ });
} else {
elements = results.elements;
}
} else {
elements = results.elements;
}
+ if (compare) {
+ elements = elements.sort(compare);
+ }
+
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
for (var i = 0; i < elements.length; i++) {
var element = elements[i];
ways = "way(" + around + ")",
relations = "relation(" + around + ")",
nearby = "(" + nodes + ";" + ways + ");out tags geom(" + bbox + ");" + relations + ";out geom(" + bbox + ");",
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 geom(" + bbox + ");relation(pivot.a);out tags bb;";
+ isin = "is_in(" + lat + "," + lng + ")->.a;way(pivot.a);out tags bb;out ids geom(" + bbox + ");relation(pivot.a);out tags bb;";
$("#sidebar_content .query-intro")
.hide();
$("#sidebar_content .query-intro")
.hide();
- runQuery(latlng, radius, nearby, $("#query-nearby"));
- runQuery(latlng, radius, isin, $("#query-isin"), compareSize);
+ runQuery(latlng, radius, nearby, $("#query-nearby"), false);
+ runQuery(latlng, radius, isin, $("#query-isin"), true, compareSize);
}
function clickHandler(e) {
}
function clickHandler(e) {