diff --git a/frontend/app/map/search/search.js b/frontend/app/map/search/search.js index c4148a39..23ad5197 100644 --- a/frontend/app/map/search/search.js +++ b/frontend/app/map/search/search.js @@ -21,7 +21,7 @@ } map.loadStart(); - map.socket.emit("find", { query: scope.searchString }, function(err, results) { + map.socket.emit("find", { query: scope.searchString, loadUrls: true }, function(err, results) { map.loadEnd(); if(err) diff --git a/server/search.js b/server/search.js index af72fe9f..8352351a 100644 --- a/server/search.js +++ b/server/search.js @@ -53,7 +53,7 @@ var stateAbbr = { } }; -function find(query) { +function find(query, loadUrls) { return Promise.resolve().then(function() { query = query.replace(/^\s+/, "").replace(/\s+$/, ""); @@ -70,16 +70,18 @@ function find(query) { } ]; } - var m = query.match(/^(node|way|relation)\s+(\d+)$/); - if(m) - return loadUrl("https://api.openstreetmap.org/api/0.6/" + m[1] + "/" + m[2] + (m[1] != "node" ? "/full" : ""), true); + if(loadUrls) { + var m = query.match(/^(node|way|relation)\s+(\d+)$/); + if(m) + return loadUrl("https://api.openstreetmap.org/api/0.6/" + m[1] + "/" + m[2] + (m[1] != "node" ? "/full" : ""), true); - m = query.match(/^trace\s+(\d+)$/); - if(m) - return loadUrl("https://www.openstreetmap.org/trace/" + m[1] + "/data"); + m = query.match(/^trace\s+(\d+)$/); + if(m) + return loadUrl("https://www.openstreetmap.org/trace/" + m[1] + "/data"); - if(query.match(/^https?:\/\//)) - return loadUrl(query); + if(query.match(/^https?:\/\//)) + return loadUrl(query); + } return request({ url: nameFinderUrl + "?format=jsonv2&polygon_geojson=1&addressdetails=1&namedetails=1&limit=" + encodeURIComponent(limit) + "&extratags=1&q=" + encodeURIComponent(query), diff --git a/server/server.js b/server/server.js index c6eef0c5..6f439158 100644 --- a/server/server.js +++ b/server/server.js @@ -272,10 +272,10 @@ var appP = Promise.denodeify(app.listen.bind(app))(config.port, config.host).the find: function(data) { return Promise.resolve().then(function() { - if(!utils.stripObject(data, { query: "string" })) + if(!utils.stripObject(data, { query: "string", loadUrls: "boolean" })) throw "Invalid parameters."; - return search.find(data.query); + return search.find(data.query, data.loadUrls); }); },