Marble

GeoDataRelation.h
1// SPDX-License-Identifier: LGPL-2.1-or-later
2//
3// SPDX-FileCopyrightText: 2017 Dennis Nienhüser <nienhueser@kde.org>
4
5#ifndef MARBLE_GEODATARELATION_H
6#define MARBLE_GEODATARELATION_H
7
8#include "GeoDataCoordinates.h"
9#include "GeoDataPlacemark.h"
10
11#include "geodata_export.h"
12
13namespace Marble
14{
15class GeoDataRelationPrivate;
16enum class OsmType;
17
18class GEODATA_EXPORT GeoDataRelation: public GeoDataFeature
19{
20public:
21 enum RelationType {
22 UnknownType = 0,
23 RouteRoad = 1 << 1,
24 RouteDetour = 1 << 2,
25 RouteFerry = 1 << 3,
26 RouteTrain = 1 << 4,
27 RouteSubway = 1 << 5,
28 RouteTram = 1 << 6,
29 RouteBus = 1 << 7,
30 RouteTrolleyBus = 1 << 8,
31 RouteBicycle = 1 << 9,
32 RouteMountainbike = 1 << 10,
33 RouteFoot = 1 << 11,
34 RouteHiking = 1 << 12,
35 RouteHorse = 1 << 13,
36 RouteInlineSkates = 1 << 14,
37 RouteSkiDownhill = 1 << 15,
38 RouteSkiNordic = 1 << 16,
39 RouteSkitour = 1 << 17,
40 RouteSled = 1 << 18
41 };
42
43 Q_DECLARE_FLAGS(RelationTypes, RelationType)
44
45 GeoDataRelation();
46 ~GeoDataRelation() override;
47 GeoDataRelation(const GeoDataRelation &other);
48 GeoDataRelation & operator=(GeoDataRelation other);
49 bool operator<(const GeoDataRelation &other) const;
50
51 const char* nodeType() const override;
52 GeoDataFeature * clone() const override;
53
54 void addMember(const GeoDataFeature* feature, qint64 id, OsmType type, const QString &role);
55 QSet<const GeoDataFeature*> members() const;
56
57 OsmPlacemarkData &osmData();
58 const OsmPlacemarkData &osmData() const;
59
60 RelationType relationType() const;
61 QSet<qint64> memberIds() const;
62 bool containsAnyOf(const QSet<qint64> &memberIds) const;
63
64private:
65 GeoDataRelationPrivate* d_ptr;
66 Q_DECLARE_PRIVATE(GeoDataRelation)
67
68};
69
70}
71
72#endif
Binds a QML item to a specific geodetic location in screen coordinates.
OsmType
Type of OSM element.
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri Jun 21 2024 12:00:06 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.