Unify lat/lon formatting for json output

This commit is contained in:
mmd-osm 2020-01-02 14:37:27 +01:00
parent 45a1d298a9
commit b54333fa6d
5 changed files with 18 additions and 14 deletions

View file

@ -12,6 +12,10 @@ module GeoRecord
def to_s
format("%.7f", self)
end
def as_json(_)
format("%.7f", self).to_f
end
end
# This scaling factor is used to convert between the float lat/lon that is

View file

@ -1,6 +1,6 @@
json.bounds do
json.minlat format("%.7f", @bounds.min_lat)
json.minlon format("%.7f", @bounds.min_lon)
json.maxlat format("%.7f", @bounds.max_lat)
json.maxlon format("%.7f", @bounds.max_lon)
json.minlat GeoRecord::Coord.new(@bounds.min_lat)
json.minlon GeoRecord::Coord.new(@bounds.min_lon)
json.maxlat GeoRecord::Coord.new(@bounds.max_lat)
json.maxlon GeoRecord::Coord.new(@bounds.max_lon)
end

View file

@ -1,8 +1,8 @@
json.type "node"
json.id node.id
if node.visible
json.lat format("%.7f", node.lat.to_f)
json.lon format("%.7f", node.lon.to_f)
json.lat GeoRecord::Coord.new(node.lat)
json.lon GeoRecord::Coord.new(node.lon)
end
json.timestamp node.timestamp.xmlschema
json.version node.version

View file

@ -1,8 +1,8 @@
json.type "node"
json.id old_node.node_id
if old_node.visible
json.lat format("%.7f", old_node.lat.to_f)
json.lon format("%.7f", old_node.lon.to_f)
json.lat GeoRecord::Coord.new(old_node.lat)
json.lon GeoRecord::Coord.new(old_node.lon)
end
json.timestamp old_node.timestamp.xmlschema
json.version old_node.version

View file

@ -92,15 +92,15 @@ module Api
assert_equal Settings.api_version, js["version"]
assert_equal Settings.generator, js["generator"]
assert_equal "#{format('%.7f', minlon)}", js["bounds"]["minlon"]
assert_equal "#{format('%.7f', minlat)}", js["bounds"]["minlat"]
assert_equal "#{format('%.7f', maxlon)}", js["bounds"]["maxlon"]
assert_equal "#{format('%.7f', maxlat)}", js["bounds"]["maxlat"]
assert_equal GeoRecord::Coord.new(minlon), js["bounds"]["minlon"]
assert_equal GeoRecord::Coord.new(minlat), js["bounds"]["minlat"]
assert_equal GeoRecord::Coord.new(maxlon), js["bounds"]["maxlon"]
assert_equal GeoRecord::Coord.new(maxlat), js["bounds"]["maxlat"]
result_nodes = js["elements"].select { |a| a["type"] == "node" }
.select { |a| a["id"] == node.id }
.select { |a| a["lat"] == "#{format('%.7f', node.lat)}" }
.select { |a| a["lon"] == "#{format('%.7f', node.lon)}" }
.select { |a| a["lat"] == GeoRecord::Coord.new(node.lat) }
.select { |a| a["lon"] == GeoRecord::Coord.new(node.lon) }
.select { |a| a["version"] == node.version }
.select { |a| a["changeset"] == node.changeset_id }
.select { |a| a["timestamp"] == node.timestamp.xmlschema }