From db865a66ff1a89e1de90099ca18fa4c14037bf1c Mon Sep 17 00:00:00 2001 From: Daria Volvenkova Date: Thu, 12 Mar 2020 19:37:28 +0300 Subject: [PATCH] [bookmarks] Support float altitudes in kml files. --- kml/serdes.cpp | 6 +++--- map/map_tests/bookmarks_test.cpp | 6 ++++-- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/kml/serdes.cpp b/kml/serdes.cpp index 8fbab5efa63..e5787c39e20 100644 --- a/kml/serdes.cpp +++ b/kml/serdes.cpp @@ -532,9 +532,9 @@ bool ParsePoint(std::string const & s, char const * delim, m2::PointD & pt, { pt = mercator::FromLatLon(lat, lon); - int rawAltitude; - if (++iter && strings::to_int(*iter, rawAltitude)) - altitude = static_cast(rawAltitude); + double rawAltitude; + if (++iter && strings::to_double(*iter, rawAltitude)) + altitude = static_cast(round(rawAltitude)); return true; } diff --git a/map/map_tests/bookmarks_test.cpp b/map/map_tests/bookmarks_test.cpp index fcd1d579c9e..69abe6e4ce6 100644 --- a/map/map_tests/bookmarks_test.cpp +++ b/map/map_tests/bookmarks_test.cpp @@ -1123,12 +1123,14 @@ UNIT_CLASS_TEST(Runner, TrackParsingTest_1) dp::Color(171, 230, 0, 255), dp::Color(0, 230, 117, 255), dp::Color(0, 59, 230, 255)}}; - array const length = {{3525.46839061, 27172.44338132, 27046.0456586, 23967.35765800}}; - + array const length = {{3525.46839061, 27174.11393166, 27046.0456586, 23967.35765800}}; + array const altitudes = {{0, 27, -3, -2}}; size_t i = 0; for (auto trackId : bmManager.GetTrackIds(catId)) { auto const * track = bmManager.GetTrack(trackId); + TEST_EQUAL(track->GetPointsWithAltitudes()[0].GetAltitude(), altitudes[i], + (track->GetPointsWithAltitudes()[0].GetAltitude(), altitudes[i])); TEST_EQUAL(names[i], track->GetName(), ()); TEST(fabs(track->GetLengthMeters() - length[i]) < 1.0E-6, (track->GetLengthMeters(), length[i])); TEST_GREATER(track->GetLayerCount(), 0, ());