Sur cette page

QGeoRoutingManager Class

La classe QGeoRoutingManager fournit un support pour les opérations de routage géographique. Plus d'informations...

Header: #include <QGeoRoutingManager>
qmake: QT += location
Inherits: QObject

Fonctions publiques

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)

Signaux

void errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString())
void finished(QGeoRouteReply *reply)

Description détaillée

Les méthodes calculateRoute() et updateRoute() font fonctionner les objets QGeoRouteReply, qui gèrent ces opérations et rendent compte du résultat des opérations et des erreurs éventuelles.

La fonction calculateRoute() est utilisée pour trouver un itinéraire (ou des itinéraires) qui suit un ensemble de points de passage et répond à divers autres critères. La classe QGeoRouteRequest est utilisée pour spécifier ces informations.

Si supportsRouteUpdates() renvoie true, le QGeoRoutingManager prend en charge la mise à jour des informations relatives à l'itinéraire en fonction des mises à jour de la position. Les estimations de temps de parcours et de distance seront alors mises à jour, et les QGeoRouteSegments déjà parcourus seront supprimés de l'itinéraire.

Les mises à jour peuvent être déclenchées par la fonction updateRoute(), qui utilise les instances QGeoPositionInfo émises en tant que mises à jour de position par QGeoPositionInfoSource.

Les instances de QGeoRoutingManager sont accessibles avec QGeoServiceProvider::routingManager().

Un petit exemple d'utilisation de QGeoRoutingManager et de QGeoRouteRequests suit :

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();
    }
};

Fonction membre Documentation

[virtual noexcept] QGeoRoutingManager::~QGeoRoutingManager()

Détruit ce gestionnaire.

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

Commence le calcul de l'itinéraire spécifié par request.

Un objet QGeoRouteReply sera renvoyé, qui peut être utilisé pour gérer l'opération de routage et renvoyer les résultats de l'opération.

Ce gestionnaire et l'objet QGeoRouteReply renvoyé émettront des signaux indiquant si l'opération est terminée ou si des erreurs se produisent.

Une fois l'opération terminée, QGeoRouteReply::routes peut être utilisé pour récupérer l'itinéraire ou les itinéraires calculés.

Si request comprend des caractéristiques qui ne sont pas prises en charge par ce gestionnaire, comme le signalent les méthodes de ce gestionnaire, un message QGeoRouteReply::UnsupportedOptionError est émis.

L'utilisateur est responsable de la suppression de l'objet de réponse renvoyé, bien que cela puisse être fait dans le slot connecté à QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() ou QGeoRouteReply::errorOccurred() avec deleteLater().

[signal] void QGeoRoutingManager::errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString())

Ce signal est émis lorsqu'une erreur a été détectée dans le traitement de reply. Le signal QGeoRoutingManager::finished() suivra probablement.

L'erreur sera décrite par le code d'erreur error. Si errorString n'est pas vide, il contiendra une description textuelle de l'erreur.

Ce signal et QGeoRouteReply::errorOccurred() seront émis en même temps.

Remarque : ne supprimez pas l'objet reply dans le slot connecté à ce signal. Utilisez plutôt deleteLater().

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

Ce signal est émis lorsque reply a terminé le traitement.

Si reply::error() est égal à QGeoRouteReply::NoError, le traitement s'est terminé avec succès.

Ce signal et QGeoRouteReply::finished() seront émis en même temps.

Remarque : ne supprimez pas l'objet reply dans le slot connecté à ce signal. Utilisez plutôt deleteLater().

QLocale QGeoRoutingManager::locale() const

Renvoie la locale utilisée pour indiquer à ce gestionnaire de routage la langue à utiliser pour les adresses et les instructions.

Voir aussi setLocale().

QString QGeoRoutingManager::managerName() const

Renvoie le nom du moteur qui implémente le comportement de ce gestionnaire de routage.

La combinaison de managerName() et managerVersion() doit être unique parmi les implémentations du plugin.

int QGeoRoutingManager::managerVersion() const

Renvoie la version du moteur qui implémente le comportement de ce gestionnaire de routines.

La combinaison de managerName() et managerVersion() doit être unique parmi les implémentations du plugin.

QLocale::MeasurementSystem QGeoRoutingManager::measurementSystem() const

Renvoie le système de mesure utilisé par ce gestionnaire.

Si setMeasurementSystem() a été appelé, la valeur renvoyée par cette fonction peut être différente de celle renvoyée par locale().measurementSystem(). Dans ce cas, la valeur renvoyée par cette fonction est celle qui sera utilisée par le gestionnaire.

Voir également setMeasurementSystem() et setLocale().

void QGeoRoutingManager::setLocale(const QLocale &locale)

Définit la locale à utiliser par ce gestionnaire à locale.

Si ce gestionnaire de routage prend en charge le renvoi d'adresses et d'instructions dans différentes langues, celles-ci seront renvoyées dans la langue de locale.

La locale utilisée est par défaut la locale du système si elle n'est pas définie.

Voir également locale().

void QGeoRoutingManager::setMeasurementSystem(QLocale::MeasurementSystem system)

Définit le système de mesure utilisé par ce gestionnaire à system.

Le système de mesure peut être défini indépendamment de la locale. Tant setLocale() que cette fonction définissent le système de mesure. La valeur définie par la dernière fonction appelée sera utilisée.

Voir également measurementSystem(), locale() et setLocale().

QGeoRouteRequest::FeatureTypes QGeoRoutingManager::supportedFeatureTypes() const

Renvoie les types de caractéristiques que ce gestionnaire peut prendre en compte lors de la planification de l'itinéraire.

QGeoRouteRequest::FeatureWeights QGeoRoutingManager::supportedFeatureWeights() const

Renvoie les pondérations que ce gestionnaire peut appliquer aux différentes caractéristiques lors de la planification de l'itinéraire.

QGeoRouteRequest::ManeuverDetails QGeoRoutingManager::supportedManeuverDetails() const

Renvoie les niveaux de détail des manœuvres de navigation qui peuvent être demandés par ce gestionnaire.

QGeoRouteRequest::RouteOptimizations QGeoRoutingManager::supportedRouteOptimizations() const

Renvoie les optimisations d'itinéraires prises en charge par ce gestionnaire.

QGeoRouteRequest::SegmentDetails QGeoRoutingManager::supportedSegmentDetails() const

Renvoie les niveaux de détail des segments de routage qui peuvent être demandés à ce gestionnaire.

QGeoRouteRequest::TravelModes QGeoRoutingManager::supportedTravelModes() const

Renvoie les modes de déplacement pris en charge par ce gestionnaire.

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

Commence le processus de mise à jour de route sur la base de la position actuelle position.

Un objet QGeoRouteReply sera renvoyé, qui peut être utilisé pour gérer l'opération de routage et renvoyer les résultats de l'opération.

Ce gestionnaire et l'objet QGeoRouteReply renvoyé émettront des signaux indiquant si l'opération est terminée ou si des erreurs se produisent.

Si supportsRouteUpdates() renvoie false, un message QGeoRouteReply::UnsupportedOptionError sera émis.

Une fois l'opération terminée, QGeoRouteReply::routes peut être utilisé pour récupérer l'itinéraire mis à jour.

L'itinéraire renvoyé peut être totalement différent de l'itinéraire original, en particulier si position est éloigné de l'itinéraire initial. Dans le cas contraire, l'itinéraire sera similaire, mais le temps et la distance restants seront mis à jour et les segments de l'itinéraire initial qui ont été parcourus seront supprimés.

L'utilisateur est responsable de la suppression de l'objet de réponse renvoyé, bien que cela puisse être fait dans le slot connecté à QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() ou QGeoRouteReply::errorOccurred() avec 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.