- success: function(results) {
- var features = {};
-
- $section.find(".loader").stopTime("loading").hide();
-
- for (var i = 0; i < results.elements.length; i++) {
- var element = results.elements[i],
- geometry = featureGeometry(element, features);
-
- if (interestingFeature(element, latlng, radius)) {
- var $li = $("<li>")
- .addClass("query-result")
- .data("geometry", geometry)
- .appendTo($ul);
- var $p = $("<p>")
- .text(featurePrefix(element) + " ")
- .appendTo($li);
-
- $("<a>")
- .attr("href", "/" + element.type + "/" + element.id)
- .text(featureName(element))
- .appendTo($p);
- }
+ xhrFields: {
+ withCredentials: credentials
+ },
+ success: function (results) {
+ var elements;
+
+ $section.find(".loader").hide();
+
+ if (merge) {
+ elements = results.elements.reduce(function (hash, element) {
+ var key = element.type + element.id;
+ if ("geometry" in element) {
+ delete element.bounds;
+ }
+ hash[key] = $.extend({}, hash[key], element);
+ return hash;
+ }, {});
+
+ elements = Object.keys(elements).map(function (key) {
+ return elements[key];
+ });
+ } else {
+ elements = results.elements;
+ }
+
+ if (compare) {
+ elements = elements.sort(compare);
+ }
+
+ for (const element of elements) {
+ if (!interestingFeature(element)) continue;
+
+ var $li = $("<li>")
+ .addClass("list-group-item list-group-item-action")
+ .text(featurePrefix(element) + " ")
+ .appendTo($ul);
+
+ $("<a>")
+ .addClass("stretched-link")
+ .attr("href", "/" + element.type + "/" + element.id)
+ .data("geometry", featureGeometry(element))
+ .text(featureName(element))
+ .appendTo($li);
+ }
+
+ if (results.remark) {
+ $("<li>")
+ .addClass("list-group-item")
+ .text(I18n.t("javascripts.query.error", { server: url, error: results.remark }))
+ .appendTo($ul);