QGeoRoutingManager Class
Die Klasse „QGeoRoutingManager“ bietet Unterstützung für geografische Routing-Vorgänge. Mehr...
| Header: | #include <QGeoRoutingManager> |
| qmake: | QT += location |
| Inherits: | QObject |
Öffentliche Funktionen
| virtual | ~QGeoRoutingManager() |
| QGeoRouteReply * | calculateRoute(const QGeoRouteRequest &request) |
| QLocale | locale() const |
| QString | managerName() const |
| int | managerVersion() const |
| QLocale::MeasurementSystem | measurementSystem() const |
| void | setLocale(const QLocale &locale) |
| void | setMeasurementSystem(QLocale::MeasurementSystem system) |
| QGeoRouteRequest::FeatureTypes | supportedFeatureTypes() const |
| QGeoRouteRequest::FeatureWeights | supportedFeatureWeights() const |
| QGeoRouteRequest::ManeuverDetails | supportedManeuverDetails() const |
| QGeoRouteRequest::RouteOptimizations | supportedRouteOptimizations() const |
| QGeoRouteRequest::SegmentDetails | supportedSegmentDetails() const |
| QGeoRouteRequest::TravelModes | supportedTravelModes() const |
| QGeoRouteReply * | updateRoute(const QGeoRoute &route, const QGeoCoordinate &position) |
Signale
| void | errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString()) |
| void | finished(QGeoRouteReply *reply) |
Ausführliche Beschreibung
Die Methoden „ calculateRoute()“ und „ updateRoute()“ arbeiten mit „ QGeoRouteReply “-Objekten zusammen, die diese Vorgänge verwalten und über das Ergebnis der Vorgänge sowie über eventuell aufgetretene Fehler berichten.
Die Funktion ` calculateRoute()` dient dazu, eine Route (oder Routen) zu ermitteln, die einer Reihe von Wegpunkten folgt und verschiedene andere Kriterien erfüllt. Die Klasse ` QGeoRouteRequest ` wird verwendet, um diese Informationen festzulegen.
Wenn `supportsRouteUpdates()` den Wert `true` zurückgibt, unterstützt der `QGeoRoutingManager` die Aktualisierung von Routeninformationen auf der Grundlage von Positionsaktualisierungen. Dies führt dazu, dass die Schätzungen der Fahrzeit und der Entfernung aktualisiert werden und bereits durchfahrene `QGeoRouteSegments` aus der Route entfernt werden.
Die Aktualisierungen können mit der Funktion ` updateRoute()` ausgelöst werden, die die ` QGeoPositionInfo `-Instanzen nutzt, die von ` QGeoPositionInfoSource` als Positionsaktualisierungen ausgegeben werden.
Auf Instanzen von `QGeoRoutingManager` kann über ` QGeoServiceProvider::routingManager()` zugegriffen werden.
Es folgt ein kleines Beispiel für die Verwendung von `QGeoRoutingManager` und `QGeoRouteRequests`:
class RouteHandler : public QObject
{
Q_OBJECT
public:
RouteHandler(QGeoRoutingManager *routingManager,
const QGeoCoordinate &origin,
const QGeoCoordinate &destination) {
QGeoRouteRequest request(origin, destination);
// The request defaults to the fastest route by car, which is
// equivalent to:
// request.setTravelMode(QGeoRouteRequest::CarTravel);
// request.setRouteOptimization(QGeoRouteRequest::FastestRoute);
request.setAvoidFeatureTypes(QGeoRouteRequest::AvoidTolls);
request.setAvoidFeatureTypes(QGeoRouteRequest::AvoidMotorPoolLanes);
QGeoRouteRequest::AvoidFeaturesTypes avoidableFeatures = routingManager->supportedAvoidFeatureTypes();
if (!(avoidableFeatures & request.avoidFeatureTypes())) {
// ... inform the user that the routing manager does not
// provide support for avoiding tolls and/or motor pool lanes ...
return;
}
QGeoRouteReply *reply = routingManager->calculateRoute(request);
if (reply->isFinished()) {
if (reply->error() == QGeoRouteReply::NoError) {
routeCalculated(reply);
} else {
routeError(reply, reply->error(), reply->errorString());
}
return;
}
connect(routingManager, &QGeoRoutingManager::finished,
this, &RouteHandler::routeCalculated);
connect(routingManager, &QGeoRoutingManager::errorOccurred,
this, &RouteHandler::routeError);
}
private slots:
void routeCalculated(QGeoRouteReply *reply)
{
// A route request can ask for several alternative routes ...
if (reply->routes().size() != 0) {
// ... but by default it will only get a single route
QGeoRoute route = reply->routes().at(0);
//... now we have to make use of the route ...
}
reply->deleteLater();
}
void routeError(QGeoRouteReply *reply, QGeoRouteReply:Error error, const QString &errorString)
{
// ... inform the user that an error has occurred ...
reply->deleteLater();
}
};Dokumentation der Mitgliedsfunktionen
[virtual noexcept] QGeoRoutingManager::~QGeoRoutingManager()
Löscht diesen Manager.
QGeoRouteReply *QGeoRoutingManager::calculateRoute(const QGeoRouteRequest &request)
Startet die Berechnung der durch „ request “ angegebenen Route.
Es wird ein ` QGeoRouteReply `-Objekt zurückgegeben, mit dem sich der Routing-Vorgang verwalten und dessen Ergebnisse abrufen lassen.
Dieser Manager und das zurückgegebene ` QGeoRouteReply `-Objekt senden Signale aus, die anzeigen, ob der Vorgang abgeschlossen wurde oder ob Fehler aufgetreten sind.
Sobald der Vorgang abgeschlossen ist, kann „ QGeoRouteReply::routes “ verwendet werden, um die berechnete Route oder die berechneten Routen abzurufen.
Wenn „ request “ Funktionen enthält, die von diesem Manager nicht unterstützt werden – wie durch die Methoden dieses Managers gemeldet –, tritt ein „ QGeoRouteReply::UnsupportedOptionError “ auf.
Der Benutzer ist dafür verantwortlich, das zurückgegebene Antwortobjekt zu löschen; dies kann jedoch im Slot erfolgen, der mit „ QGeoRoutingManager::finished()“, „ QGeoRoutingManager::errorOccurred()“, „ QGeoRouteReply::finished()“ oder „ QGeoRouteReply::errorOccurred()“ über „ deleteLater()“ verbunden ist.
[signal] void QGeoRoutingManager::errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString())
Dieses Signal wird ausgegeben, wenn bei der Verarbeitung von reply ein Fehler festgestellt wurde. Das Signal QGeoRoutingManager::finished() wird wahrscheinlich darauf folgen.
Der Fehler wird durch den Fehlercode ` error` beschrieben. Ist ` errorString ` nicht leer, enthält es eine textuelle Beschreibung des Fehlers.
Dieses Signal und QGeoRouteReply::errorOccurred() werden gleichzeitig ausgegeben.
Hinweis: LöschenSie das reply -Objekt nicht in dem mit diesem Signal verbundenen Slot. Verwenden Sie stattdessen deleteLater().
[signal] void QGeoRoutingManager::finished(QGeoRouteReply *reply)
Dieses Signal wird ausgelöst, wenn die Verarbeitung von „ reply “ abgeschlossen ist.
Wenn reply::error() gleich QGeoRouteReply::NoError ist, wurde die Verarbeitung erfolgreich abgeschlossen.
Dieses Signal und „ QGeoRouteReply::finished()“ werden gleichzeitig ausgelöst.
Hinweis: LöschenSie das reply -Objekt nicht in dem mit diesem Signal verbundenen Slot. Verwenden Sie stattdessen deleteLater().
QLocale QGeoRoutingManager::locale() const
Gibt die Locale zurück, anhand derer diesem Routing-Manager mitgeteilt wird, welche Sprache für Adressen und Anweisungen verwendet werden soll.
Siehe auch „ setLocale()“.
QString QGeoRoutingManager::managerName() const
Gibt den Namen der Engine zurück, die das Verhalten dieses Routing-Managers implementiert.
Die Kombination aus „managerName()“ und „ managerVersion()“ sollte unter den Plugin-Implementierungen eindeutig sein.
int QGeoRoutingManager::managerVersion() const
Gibt die Version der Engine zurück, die das Verhalten dieses Routinenmanagers implementiert.
Die Kombination aus ` managerName()` und `managerVersion()` sollte unter den Plugin-Implementierungen eindeutig sein.
QLocale::MeasurementSystem QGeoRoutingManager::measurementSystem() const
Gibt das von diesem Manager verwendete Maßsystem zurück.
Wenn „ setMeasurementSystem()“ aufgerufen wurde, kann der von dieser Funktion zurückgegebene Wert von dem Wert abweichen, der von „ locale()“ oder „measurementSystem()“ zurückgegeben wird. In diesem Fall entspricht der von dieser Funktion zurückgegebene Wert dem Wert, der vom Manager verwendet wird.
Siehe auch setMeasurementSystem() und setLocale().
void QGeoRoutingManager::setLocale(const QLocale &locale)
Legt die von diesem Manager zu verwendende Sprachumgebung auf locale fest.
Wenn dieser Routing-Manager die Ausgabe von Adressen und Anweisungen in verschiedenen Sprachen unterstützt, werden diese in der Sprache von „ locale “ ausgegeben.
Ist die Locale nicht festgelegt, wird standardmäßig die System-Locale verwendet.
Siehe auch ` locale()` .
void QGeoRoutingManager::setMeasurementSystem(QLocale::MeasurementSystem system)
Setzt das von diesem Manager verwendete Maßsystem auf „ system “.
Das Maßsystem kann unabhängig von der Locale festgelegt werden. Sowohl ` setLocale()` als auch diese Funktion legen das Maßsystem fest. Es wird der Wert verwendet, der durch die zuletzt aufgerufene Funktion festgelegt wurde.
Siehe auch ` measurementSystem()`, ` locale()` und ` setLocale()`.
QGeoRouteRequest::FeatureTypes QGeoRoutingManager::supportedFeatureTypes() const
Gibt die Arten von Objekten zurück, die dieser Manager bei der Routenplanung berücksichtigen kann.
QGeoRouteRequest::FeatureWeights QGeoRoutingManager::supportedFeatureWeights() const
Gibt die Gewichtungen zurück, die dieser Manager bei der Routenplanung auf verschiedene Merkmale anwenden kann.
QGeoRouteRequest::ManeuverDetails QGeoRoutingManager::supportedManeuverDetails() const
Gibt die Detailebenen für Navigationsmanöver zurück, die von diesem Manager angefordert werden können.
QGeoRouteRequest::RouteOptimizations QGeoRoutingManager::supportedRouteOptimizations() const
Gibt die von diesem Manager unterstützten Routenoptimierungen zurück.
QGeoRouteRequest::SegmentDetails QGeoRoutingManager::supportedSegmentDetails() const
Gibt die Detailebenen für Routenabschnitte zurück, die über diesen Manager abgefragt werden können.
QGeoRouteRequest::TravelModes QGeoRoutingManager::supportedTravelModes() const
Gibt die von diesem Manager unterstützten Fortbewegungsarten zurück.
QGeoRouteReply *QGeoRoutingManager::updateRoute(const QGeoRoute &route, const QGeoCoordinate &position)
Leitet den Vorgang zur Aktualisierung von „ route “ basierend auf der aktuellen Position „ position “ ein.
Es wird ein ` QGeoRouteReply `-Objekt zurückgegeben, das zur Verwaltung des Routing-Vorgangs und zur Rückgabe der Ergebnisse des Vorgangs verwendet werden kann.
Dieser Manager und das zurückgegebene QGeoRouteReply -Objekt senden Signale aus, die anzeigen, ob der Vorgang abgeschlossen wurde oder ob Fehler aufgetreten sind.
Wenn `supportsRouteUpdates()` den Wert `false` zurückgibt, wird ein ` QGeoRouteReply::UnsupportedOptionError ` ausgelöst.
Sobald der Vorgang abgeschlossen ist, kann mit „ QGeoRouteReply::routes “ die aktualisierte Route abgerufen werden.
Die zurückgegebene Route kann sich vollständig von der ursprünglichen Route unterscheiden, insbesondere wenn „ position “ weit von der ursprünglichen Route entfernt ist. Andernfalls wird die Route ähnlich sein, wobei jedoch die verbleibende Zeit und Entfernung aktualisiert und bereits zurückgelegte Abschnitte der ursprünglichen Route entfernt werden.
Der Benutzer ist dafür verantwortlich, das zurückgegebene Antwortobjekt zu löschen; dies kann jedoch im Slot erfolgen, der mit „ QGeoRoutingManager::finished()“, „ QGeoRoutingManager::errorOccurred()“, „ QGeoRouteReply::finished()“ oder „ QGeoRouteReply::errorOccurred()“ verbunden ist, und zwar mit „ deleteLater()“.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.