Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qgeorouterequest.h
Go to the documentation of this file.
1// Copyright (C) 2015 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QGEOROUTEREQUEST_H
5#define QGEOROUTEREQUEST_H
6
7#include <QtCore/QList>
8#include <QtCore/QExplicitlySharedDataPointer>
9#include <QtCore/QDateTime>
10
11#include <QtLocation/qlocationglobal.h>
12#include <QtPositioning/QGeoCoordinate>
13
14QT_BEGIN_NAMESPACE
15
16class QGeoRectangle;
17class QGeoRouteRequestPrivate;
18QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QGeoRouteRequestPrivate, Q_LOCATION_EXPORT)
19
20class Q_LOCATION_EXPORT QGeoRouteRequest
21{
22public:
23 enum TravelMode {
24 CarTravel = 0x0001,
25 PedestrianTravel = 0x0002,
26 BicycleTravel = 0x0004,
27 PublicTransitTravel = 0x0008,
28 TruckTravel = 0x0010
29 };
30 Q_DECLARE_FLAGS(TravelModes, TravelMode)
31
32 enum FeatureType {
33 NoFeature = 0x00000000,
34 TollFeature = 0x00000001,
35 HighwayFeature = 0x00000002,
36 PublicTransitFeature = 0x00000004,
37 FerryFeature = 0x00000008,
38 TunnelFeature = 0x00000010,
39 DirtRoadFeature = 0x00000020,
40 ParksFeature = 0x00000040,
41 MotorPoolLaneFeature = 0x00000080,
42 TrafficFeature = 0x00000100
43 };
44 Q_DECLARE_FLAGS(FeatureTypes, FeatureType)
45
46 enum FeatureWeight {
47 NeutralFeatureWeight = 0x00000000,
48 PreferFeatureWeight = 0x00000001,
49 RequireFeatureWeight = 0x00000002,
50 AvoidFeatureWeight = 0x00000004,
51 DisallowFeatureWeight = 0x00000008
52 };
53 Q_DECLARE_FLAGS(FeatureWeights, FeatureWeight)
54
55 enum RouteOptimization {
56 ShortestRoute = 0x0001,
57 FastestRoute = 0x0002,
58 MostEconomicRoute = 0x0004,
59 MostScenicRoute = 0x0008
60 };
61 Q_DECLARE_FLAGS(RouteOptimizations, RouteOptimization)
62
63 enum SegmentDetail {
64 NoSegmentData = 0x0000,
65 BasicSegmentData = 0x0001
66 };
67 Q_DECLARE_FLAGS(SegmentDetails, SegmentDetail)
68
69 enum ManeuverDetail {
70 NoManeuvers = 0x0000,
71 BasicManeuvers = 0x0001
72 };
73 Q_DECLARE_FLAGS(ManeuverDetails, ManeuverDetail)
74
75 explicit QGeoRouteRequest(const QList<QGeoCoordinate> &waypoints = QList<QGeoCoordinate>());
76 QGeoRouteRequest(const QGeoCoordinate &origin,
77 const QGeoCoordinate &destination);
78 QGeoRouteRequest(const QGeoRouteRequest &other) noexcept;
79 QGeoRouteRequest(QGeoRouteRequest &&other) noexcept = default;
80
81 ~QGeoRouteRequest();
82
83 QGeoRouteRequest &operator= (const QGeoRouteRequest &other) noexcept;
84 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(QGeoRouteRequest)
85
86 void swap(QGeoRouteRequest &other) noexcept { d_ptr.swap(other.d_ptr); }
87
88 friend inline bool operator==(const QGeoRouteRequest &lhs,
89 const QGeoRouteRequest &rhs) noexcept
90 {
91 return lhs.isEqual(rhs);
92 }
93 friend inline bool operator!=(const QGeoRouteRequest &lhs,
94 const QGeoRouteRequest &rhs) noexcept
95 {
96 return !lhs.isEqual(rhs);
97 }
98
99 void setWaypoints(const QList<QGeoCoordinate> &waypoints);
100 QList<QGeoCoordinate> waypoints() const;
101
102 void setExcludeAreas(const QList<QGeoRectangle> &areas);
103 QList<QGeoRectangle> excludeAreas() const;
104
105 // defaults to 0
106 void setNumberAlternativeRoutes(int alternatives);
107 int numberAlternativeRoutes() const;
108
109 // defaults to TravelByCar
110 void setTravelModes(TravelModes travelModes);
111 TravelModes travelModes() const;
112
113 void setFeatureWeight(FeatureType featureType, FeatureWeight featureWeight);
114 FeatureWeight featureWeight(FeatureType featureType) const;
115 QList<FeatureType> featureTypes() const;
116
117 // defaults to OptimizeFastest
118 void setRouteOptimization(RouteOptimizations optimization);
119 RouteOptimizations routeOptimization() const;
120
121 // defaults to BasicSegmentData
122 void setSegmentDetail(SegmentDetail segmentDetail);
123 SegmentDetail segmentDetail() const;
124
125 // defaults to BasicManeuvers
126 void setManeuverDetail(ManeuverDetail maneuverDetail);
127 ManeuverDetail maneuverDetail() const;
128
129 // defaults to invalid datetime
130 void setDepartureTime(const QDateTime &departureTime);
131 QDateTime departureTime() const;
132
133private:
134 QExplicitlySharedDataPointer<QGeoRouteRequestPrivate> d_ptr;
135
136 bool isEqual(const QGeoRouteRequest &other) const noexcept;
137};
138
139Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::TravelModes)
140Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::FeatureTypes)
141Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::FeatureWeights)
142Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::RouteOptimizations)
143Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::SegmentDetails)
144Q_DECLARE_OPERATORS_FOR_FLAGS(QGeoRouteRequest::ManeuverDetails)
145
146QT_END_NAMESPACE
147
148#endif
\inmodule QtLocation