Changed V9MM format to read multiple geometries
Signed-off-by: Sergiy Kozyr <s.trump@gmail.com>
This commit is contained in:
parent
a076ac687a
commit
a7233ac166
2 changed files with 36 additions and 4 deletions
|
@ -38,4 +38,19 @@ void MultiGeometry::FromPoints(std::vector<m2::PointD> const & points)
|
|||
ASSERT(line.size() > 1, ());
|
||||
m_lines.push_back(std::move(line));
|
||||
}
|
||||
|
||||
MultiGeometry mergeGeometry(std::vector<MultiGeometry> aGeometries)
|
||||
{
|
||||
MultiGeometry merged;
|
||||
for (auto const & geometry : aGeometries)
|
||||
{
|
||||
for (auto const & line : geometry.m_lines)
|
||||
{
|
||||
merged.m_lines.push_back(line);
|
||||
}
|
||||
}
|
||||
|
||||
return merged;
|
||||
}
|
||||
|
||||
} // namespace kml
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
|
||||
namespace kml
|
||||
{
|
||||
|
||||
MultiGeometry mergeGeometry(std::vector<MultiGeometry> aGeometries);
|
||||
|
||||
struct TrackDataV9MM : TrackDataV8MM
|
||||
{
|
||||
DECLARE_VISITOR_AND_DEBUG_PRINT(TrackDataV9MM, visitor(m_id, "id"),
|
||||
|
@ -13,8 +16,7 @@ struct TrackDataV9MM : TrackDataV8MM
|
|||
visitor(m_description, "description"),
|
||||
visitor(m_layers, "layers"),
|
||||
visitor(m_timestamp, "timestamp"),
|
||||
visitor(m_flag1, "flag1"), // Extra field introduced in V9MM.
|
||||
visitor(m_geometry, "geometry"),
|
||||
visitor(m_multiGeometry, "multiGeometry"), // V9MM introduced multiGeometry instead of a single one
|
||||
visitor(m_visible, "visible"),
|
||||
visitor(m_constant1, "constant1"),
|
||||
visitor(m_constant2, "constant2"),
|
||||
|
@ -25,8 +27,23 @@ struct TrackDataV9MM : TrackDataV8MM
|
|||
|
||||
DECLARE_COLLECTABLE(LocalizableStringIndex, m_name, m_description, m_nearestToponyms, m_properties)
|
||||
|
||||
// Extra field introduced in V9MM for tracks.
|
||||
bool m_flag1 = true;
|
||||
TrackData ConvertToLatestVersion() const
|
||||
{
|
||||
TrackData data;
|
||||
data.m_id = m_id;
|
||||
data.m_localId = m_localId;
|
||||
data.m_name = m_name;
|
||||
data.m_description = m_description;
|
||||
data.m_layers = m_layers;
|
||||
data.m_timestamp = m_timestamp;
|
||||
data.m_geometry = mergeGeometry(m_multiGeometry);
|
||||
data.m_visible = m_visible;
|
||||
data.m_nearestToponyms = m_nearestToponyms;
|
||||
data.m_properties = m_properties;
|
||||
return data;
|
||||
}
|
||||
|
||||
std::vector<MultiGeometry> m_multiGeometry;
|
||||
};
|
||||
|
||||
|
||||
|
|
Reference in a new issue