From 4fb775d6d516857066e0d3cc86877ead3f6cae08 Mon Sep 17 00:00:00 2001 From: Andy Allan Date: Thu, 30 Mar 2017 14:30:54 +0100 Subject: [PATCH] Format latitudes and longitudes as %7f in XML output This matches the double formatting in XML from cgimap. Fixes #341. --- app/models/node.rb | 4 ++-- test/models/node_test.rb | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/models/node.rb b/app/models/node.rb index f8559dca7..6346907f1 100644 --- a/app/models/node.rb +++ b/app/models/node.rb @@ -185,8 +185,8 @@ class Node < ActiveRecord::Base add_metadata_to_xml_node(el, self, changeset_cache, user_display_name_cache) if visible? - el["lat"] = lat.to_s - el["lon"] = lon.to_s + el["lat"] = format("%.7f", lat) + el["lon"] = format("%.7f", lon) end add_tags_to_xml_node(el, node_tags) diff --git a/test/models/node_test.rb b/test/models/node_test.rb index 4384c6287..bd664cfca 100644 --- a/test/models/node_test.rb +++ b/test/models/node_test.rb @@ -61,6 +61,14 @@ class NodeTest < ActiveSupport::TestCase assert_in_delta 76.543 * OldNode::SCALE, node.longitude, 0.000001 end + # Ensure the lat/lon is formatted as a decimal e.g. not 4.0e-05 + def test_lat_lon_xml_format + node = build(:node, :latitude => 0.00004 * OldNode::SCALE, :longitude => 0.00008 * OldNode::SCALE) + + assert_match /lat="0.0000400"/, node.to_xml.to_s + assert_match /lon="0.0000800"/, node.to_xml.to_s + end + # Check that you can create a node and store it def test_create changeset = create(:changeset) -- 2.39.5