File indexing completed on 2024-05-19 03:53:14

0001 // SPDX-License-Identifier: LGPL-2.1-or-later
0002 //
0003 // SPDX-FileCopyrightText: 2015 Stanciu Marius-Valeriu <stanciumarius94@gmail.com>
0004 //
0005 
0006 //Self
0007 #include "OsmRelationTagWriter.h"
0008 
0009 //Marble
0010 #include "OsmElementDictionary.h"
0011 #include "OsmObjectAttributeWriter.h"
0012 #include "OsmTagTagWriter.h"
0013 #include "GeoDataLineString.h"
0014 #include "GeoDataPolygon.h"
0015 #include "GeoDataCoordinates.h"
0016 #include "GeoDataPlacemark.h"
0017 #include "GeoWriter.h"
0018 #include "osm/OsmPlacemarkData.h"
0019 #include "osm/OsmObjectManager.h"
0020 
0021 namespace Marble
0022 {
0023 
0024 void OsmRelationTagWriter::writeMultipolygon( const GeoDataPolygon& polygon,
0025                                               const OsmPlacemarkData& osmData, GeoWriter& writer )
0026 {
0027     writer.writeStartElement( osm::osmTag_relation );
0028 
0029     OsmObjectAttributeWriter::writeAttributes( osmData, writer );
0030     OsmTagTagWriter::writeTags( osmData, writer );
0031 
0032     writer.writeStartElement( osm::osmTag_member );
0033     QString memberId = QString::number( osmData.memberReference( -1 ).id() );
0034     writer.writeAttribute( "type", "way" );
0035     writer.writeAttribute( "ref", memberId );
0036     writer.writeAttribute( "role", "outer" );
0037     writer.writeEndElement();
0038 
0039     for ( int index = 0; index < polygon.innerBoundaries().size(); ++index ) {
0040         writer.writeStartElement( osm::osmTag_member );
0041         QString memberId = QString::number( osmData.memberReference( index ).id() );
0042         writer.writeAttribute( "type", "way" );
0043         writer.writeAttribute( "ref", memberId );
0044         writer.writeAttribute( "role", "inner" );
0045         writer.writeEndElement();
0046     }
0047     writer.writeEndElement();
0048  }
0049 
0050 void OsmRelationTagWriter::writeRelation( const QVector<GeoDataPlacemark*>& members, const QString& id,
0051                                           const QMap<QString,QString>& tags, GeoWriter& writer )
0052 {
0053     Q_UNUSED( members );
0054     Q_UNUSED( id );
0055     Q_UNUSED( tags );
0056     Q_UNUSED( writer );
0057 
0058     // Not implemented yet ( need to implement the custom relations first )
0059 }
0060 
0061 }
0062