QGeoRoutingManager Class

Die Klasse QGeoRoutingManager bietet Unterstützung für geografische Routingoperationen. 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)

Detaillierte Beschreibung

Die Methoden calculateRoute() und updateRoute() fungieren als QGeoRouteReply Objekte, die diese Operationen verwalten und über das Ergebnis der Operationen und eventuell aufgetretene Fehler berichten.

Die Funktion calculateRoute() wird verwendet, um eine Route (oder Routen) zu finden, die einer Reihe von Wegpunkten folgt und verschiedenen anderen Kriterien entspricht. Die Klasse QGeoRouteRequest wird zur Angabe dieser Informationen verwendet.

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 Reisezeit- und Entfernungsschätzungen aktualisiert werden und alle bereits durchfahrenen QGeoRouteSegments aus der Route entfernt werden.

Die Aktualisierungen können mit der Funktion updateRoute() ausgelöst werden, die die Instanzen von QGeoPositionInfo nutzt, die als Positionsaktualisierungen von QGeoPositionInfoSource ausgegeben werden.

Auf Instanzen von QGeoRoutingManager kann mit 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();
    }
};

Member Function Dokumentation

[virtual noexcept] QGeoRoutingManager::~QGeoRoutingManager()

Zerstört diesen Manager.

QGeoRouteReply *QGeoRoutingManager::calculateRoute(const QGeoRouteRequest &request)

Beginnt die Berechnung der durch request angegebenen Route.

Es wird ein Objekt QGeoRouteReply 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 Objekt QGeoRouteReply geben 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(n) Route(n) abzurufen.

Wenn request Funktionen enthält, die von diesem Manager nicht unterstützt werden, wie von den Methoden in diesem Manager gemeldet, dann wird QGeoRouteReply::UnsupportedOptionError angezeigt.

Der Benutzer ist für das Löschen des zurückgegebenen Antwortobjekts verantwortlich, obwohl dies in dem mit QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() oder QGeoRouteReply::errorOccurred() verbundenen Slot mit deleteLater() erfolgen kann.

[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 aufgetreten ist. Wahrscheinlich wird das Signal QGeoRoutingManager::finished() folgen.

Der Fehler wird durch den Fehlercode error beschrieben. Wenn errorString nicht leer ist, enthält es eine textuelle Beschreibung des Fehlers.

Dieses Signal und QGeoRouteReply::errorOccurred() werden zur gleichen Zeit ausgegeben.

Hinweis: Löschen Sie nicht das Objekt reply in dem mit diesem Signal verbundenen Slot. Verwenden Sie stattdessen deleteLater().

[signal] void QGeoRoutingManager::finished(QGeoRouteReply *reply)

Dieses Signal wird ausgegeben, wenn reply die Verarbeitung abgeschlossen hat.

Wenn reply::error() gleich QGeoRouteReply::NoError ist, wurde die Verarbeitung erfolgreich abgeschlossen.

Dieses Signal und QGeoRouteReply::finished() werden zur gleichen Zeit ausgegeben.

Hinweis: Löschen Sie nicht das Objekt reply in dem mit diesem Signal verbundenen Slot. Verwenden Sie stattdessen deleteLater().

QLocale QGeoRoutingManager::locale() const

Gibt das Gebietsschema zurück, das verwendet wird, um diesem Routing-Manager mitzuteilen, welche Sprache für Adressen und Anweisungen zu verwenden ist.

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 in 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 in 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 sich der von dieser Funktion zurückgegebene Wert von dem unterscheiden, der von locale() zurückgegeben wird.measurementSystem(). In diesem Fall ist der von dieser Funktion zurückgegebene Wert derjenige, der vom Manager verwendet wird.

Siehe auch setMeasurementSystem() und setLocale().

void QGeoRoutingManager::setLocale(const QLocale &locale)

Setzt das von diesem Manager zu verwendende Gebietsschema auf locale.

Wenn dieser Routing-Manager die Rückgabe von Adressen und Anweisungen in verschiedenen Sprachen unterstützt, werden sie in der Sprache von locale zurückgegeben.

Das verwendete Gebietsschema ist standardmäßig das Systemgebietsschema, wenn dies nicht festgelegt ist.

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 vom Gebietsschema eingestellt werden. Sowohl setLocale() als auch diese Funktion setzen das Maßsystem. Es wird der Wert verwendet, der von der zuletzt aufgerufenen Funktion gesetzt wurde.

Siehe auch measurementSystem(), locale(), und setLocale().

QGeoRouteRequest::FeatureTypes QGeoRoutingManager::supportedFeatureTypes() const

Gibt die Arten von Merkmalen 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 Detailstufen 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 Routing-Segmente zurück, die mit diesem Manager angefordert werden können.

QGeoRouteRequest::TravelModes QGeoRoutingManager::supportedTravelModes() const

Gibt die von diesem Manager unterstützten Reisemodi zurück.

QGeoRouteReply *QGeoRoutingManager::updateRoute(const QGeoRoute &route, const QGeoCoordinate &position)

Beginnt den Prozess der Aktualisierung von route auf der Grundlage der aktuellen Position position.

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 geben 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 ausgegeben.

Sobald der Vorgang abgeschlossen ist, kann QGeoRouteReply::routes verwendet werden, um die aktualisierte Route abzurufen.

Die zurückgegebene Route könnte sich von der ursprünglichen Route völlig unterscheiden, insbesondere wenn position weit von der ursprünglichen Route entfernt ist. Andernfalls wird die Route ähnlich sein, obwohl die verbleibende Zeit und die Entfernung aktualisiert werden und alle Segmente der ursprünglichen Route, die durchquert wurden, entfernt werden.

Der Benutzer ist für das Löschen des zurückgegebenen Antwortobjekts verantwortlich, wobei dies in dem mit QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() oder QGeoRouteReply::errorOccurred() verbundenen Slot mit deleteLater() erfolgen kann.

© 2025 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.