From b09b0a7b374c1d60e5f3d041bb45b15bccaca5b3 Mon Sep 17 00:00:00 2001 From: Harry Cutts Date: Sun, 2 Dec 2012 13:50:10 +0000 Subject: Change from using GET to POST, for neatness --- resources/map.js | 17 +++++++++-------- resources/op2geojson.js | 6 +++--- 2 files changed, 12 insertions(+), 11 deletions(-) (limited to 'resources') diff --git a/resources/map.js b/resources/map.js index b9edc79..86b6ea6 100644 --- a/resources/map.js +++ b/resources/map.js @@ -53,10 +53,11 @@ $(document).ready(function() { $('.leaflet-control-layers-selector').first().trigger('click') } - function createQueryURL(bbox) { - return "http://overpass-api.de/api/interpreter?" + - "data=[out:json];(node[amenity=hospital](" + bbox + - ");way[amenity=hospital]("+ bbox +");node(w););out;"; + function createQueryData(bbox) { + // TODO: Use POST instead of GET, for neatness + return "data=[out:json];" + + "(node[amenity=hospital]("+ bbox + +");way[amenity=hospital]("+ bbox +");node(w););out;"; } map.on('hospitalsfetched', addHospitalLayer); @@ -74,9 +75,9 @@ $(document).ready(function() { var sw = bounds.getSouthWest(); var ne = bounds.getNorthEast(); bbox = [sw.lat, sw.lng, ne.lat, ne.lng].join(','); - var url = createQueryURL(bbox); + var data = createQueryData(bbox); converter = new op2geojson(); - converter.fetch(url, function(data) { + converter.fetch("http://overpass-api.de/api/interpreter", data, function(data) { self.hospitals = data; layer = buildLayer(data) self.hospitalLayer.addData(data); @@ -124,9 +125,9 @@ $(document).ready(function() { } function geojsonLayer() { - url = createQueryURL(52.34,13.3,52.52,13.6); + data = createQueryData([52.34,13.3,52.52,13.6]); converter = new op2geojson(); - converter.fetch(url, function(data) { + converter.fetch("http://overpass-api.de/api/interpreter", data, function(data) { self.hospitals = data; layer = buildLayer(data); self.hospitalLayer = layer; diff --git a/resources/op2geojson.js b/resources/op2geojson.js index 55be9e3..0fa2967 100644 --- a/resources/op2geojson.js +++ b/resources/op2geojson.js @@ -5,8 +5,8 @@ op2geojson = function() { var instance = {}, geojson; - instance.fetch = function(url, callback) { - $.getJSON(url, { format: "json" }, + instance.fetch = function(url, data, callback) { + $.post(url, data, function(data) { // List all of the returned nodes var nodes = []; @@ -28,7 +28,7 @@ op2geojson = function() { geojson = instance.featureCollection(features); callback(geojson); } - ); + , "json");; }; instance.point = function(node) { -- cgit v1.2.3 From ead7cc174cc6c3f9fd9c72a484e3fa0d48a89e34 Mon Sep 17 00:00:00 2001 From: Harry Cutts Date: Sun, 2 Dec 2012 13:54:35 +0000 Subject: Correct the node filter Previously, nodes that belonged to hospital polygons were displayed as health facilities if they had any tags at all (e.g. odbl=clean). They are now only displayed if they contain the amenity tag. --- resources/op2geojson.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'resources') diff --git a/resources/op2geojson.js b/resources/op2geojson.js index 0fa2967..c453df7 100644 --- a/resources/op2geojson.js +++ b/resources/op2geojson.js @@ -19,7 +19,8 @@ op2geojson = function() { // Add nodes and ways to the layer var features = []; $.each(data.elements, function(i, item) { - if( item.type === 'node' && item.tags != null ) { + if( item.type === 'node' && item.tags != undefined + && item.tags['amenity'] != undefined) { features.push( instance.point(item) ); } else if (item.type === 'way') { features.push( instance.lineString(item, nodes) ); -- cgit v1.2.3 From 0270111b931f88a56e099bbc0b18a232cedc0579 Mon Sep 17 00:00:00 2001 From: Harry Cutts Date: Sun, 2 Dec 2012 14:06:25 +0000 Subject: Add doctors and dentists to the query --- resources/map.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'resources') diff --git a/resources/map.js b/resources/map.js index 86b6ea6..484363b 100644 --- a/resources/map.js +++ b/resources/map.js @@ -56,8 +56,10 @@ $(document).ready(function() { function createQueryData(bbox) { // TODO: Use POST instead of GET, for neatness return "data=[out:json];" + - "(node[amenity=hospital]("+ bbox - +");way[amenity=hospital]("+ bbox +");node(w););out;"; + "(node[amenity=hospital]("+ bbox +");way[amenity=hospital]("+ bbox +");node(w););" + + "(node[amenity=doctors]("+ bbox +");way[amenity=doctors]("+ bbox +");node(w););" + + "(node[amenity=dentist]("+ bbox +");way[amenity=dentist]("+ bbox +");node(w););" + + "out;"; } map.on('hospitalsfetched', addHospitalLayer); -- cgit v1.2.3 From e010ed88f47e5e1629aaa494ccb8c173299842b0 Mon Sep 17 00:00:00 2001 From: Harry Cutts Date: Sun, 2 Dec 2012 14:21:49 +0000 Subject: Fix a query problem that was only showing dentists --- resources/map.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'resources') diff --git a/resources/map.js b/resources/map.js index 484363b..c078368 100644 --- a/resources/map.js +++ b/resources/map.js @@ -55,11 +55,11 @@ $(document).ready(function() { function createQueryData(bbox) { // TODO: Use POST instead of GET, for neatness - return "data=[out:json];" + + return "data=[out:json];(" + "(node[amenity=hospital]("+ bbox +");way[amenity=hospital]("+ bbox +");node(w););" + "(node[amenity=doctors]("+ bbox +");way[amenity=doctors]("+ bbox +");node(w););" + "(node[amenity=dentist]("+ bbox +");way[amenity=dentist]("+ bbox +");node(w););" + - "out;"; + ");out;"; } map.on('hospitalsfetched', addHospitalLayer); -- cgit v1.2.3