Marble
7 #include "KmlOsmPlacemarkDataTagHandler.h"
8 #include "KmlElementDictionary.h"
9 #include "GeoDataExtendedData.h"
10 #include "GeoDataGeometry.h"
11 #include "GeoDataPlacemark.h"
12 #include "GeoDataLinearRing.h"
13 #include "GeoDataPolygon.h"
14 #include "GeoDataData.h"
15 #include "GeoParser.h"
16 #include "GeoDataPoint.h"
17 #include "osm/OsmPlacemarkData.h"
25 KML_DEFINE_TAG_HANDLER_MX( OsmPlacemarkData )
27 GeoNode* KmlOsmPlacemarkDataTagHandler::parse( GeoParser& parser )
const
36 if (parser.parentElement().is<GeoDataExtendedData>() && parser.parentElement(1).is<GeoDataPlacemark>()) {
37 auto placemark = parser.parentElement(1).nodeAs<GeoDataPlacemark>();
38 placemark->setOsmData(osmData);
39 return &placemark->osmData();
49 else if ( parser.parentElement( 1 ).is<OsmPlacemarkData>() && parser.parentElement().is<GeoDataPoint>() ) {
50 OsmPlacemarkData* placemarkOsmData = parser.parentElement( 1 ).nodeAs<OsmPlacemarkData>();
51 GeoDataPoint *point = parser.parentElement().nodeAs<GeoDataPoint>();
52 GeoDataCoordinates coordinates = point->coordinates();
57 placemarkOsmData->addNodeReference( coordinates, osmData );
58 return &placemarkOsmData->nodeReference( coordinates );
68 else if ( parser.parentElement( 1 ).is<OsmPlacemarkData>() && parser.parentElement().is<GeoDataLinearRing>()
69 && parser.parentElement( 3 ).is<GeoDataPlacemark>() ) {
70 OsmPlacemarkData *placemarkOsmData = parser.parentElement( 1 ).nodeAs<OsmPlacemarkData>();
71 GeoDataPlacemark *placemark = parser.parentElement( 3 ).nodeAs<GeoDataPlacemark>();
72 GeoDataLinearRing &ring = *parser.parentElement().nodeAs<GeoDataLinearRing>();
73 GeoDataPolygon *polygon = geodata_cast<GeoDataPolygon>(placemark->geometry());
82 int memberIndex = polygon->innerBoundaries().indexOf( ring );
84 placemarkOsmData->addMemberReference( memberIndex, osmData );
85 return &placemarkOsmData->memberReference( memberIndex );
static OsmPlacemarkData fromParserAttributes(const QXmlStreamAttributes &attributes)
fromParserAttributes is a convenience function that parses all osm-related arguments of a tag
Binds a QML item to a specific geodetic location in screen coordinates.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Sep 25 2023 03:50:19 by
doxygen 1.8.17 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.