En esta página

QGeoRoutingManager Class

La clase QGeoRoutingManager proporciona soporte para operaciones de enrutamiento geográfico. Más...

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

Funciones Públicas

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)

Señales

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

Descripción detallada

Los métodos calculateRoute() y updateRoute() funcionan con los objetos QGeoRouteReply, que gestionan estas operaciones e informan del resultado de las mismas y de los errores que se hayan podido producir.

La función calculateRoute() se utiliza para encontrar una ruta (o rutas) que siga un conjunto de waypoints y cumpla otros criterios diversos. La clase QGeoRouteRequest se utiliza para especificar esta información.

Si supportsRouteUpdates() devuelve true entonces el QGeoRoutingManager soporta la actualización de la información de ruta basada en actualizaciones de posición. Esto hará que el tiempo de viaje y las estimaciones de distancia se actualicen, y cualquier QGeoRouteSegments ya atravesado se elimine de la ruta.

Las actualizaciones pueden activarse con la función updateRoute(), que hace uso de las instancias QGeoPositionInfo emitidas como actualizaciones de posición por QGeoPositionInfoSource.

Se puede acceder a las instancias de QGeoRoutingManager con QGeoServiceProvider::routingManager().

A continuación se muestra un pequeño ejemplo del uso de QGeoRoutingManager y 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();
    }
};

Documentación de las funciones miembro

[virtual noexcept] QGeoRoutingManager::~QGeoRoutingManager()

Destruye a este gerente.

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

Inicia el cálculo de la ruta especificada por request.

Se devolverá un objeto QGeoRouteReply, que puede utilizarse para gestionar la operación de enrutamiento y para devolver los resultados de la operación.

Este gestor y el objeto QGeoRouteReply devuelto emitirán señales indicando si la operación se completa o si se producen errores.

Una vez completada la operación, QGeoRouteReply::routes puede utilizarse para recuperar la ruta o rutas calculadas.

Si request incluye características que no son soportadas por este gestor, tal y como informan los métodos de este gestor, se producirá un QGeoRouteReply::UnsupportedOptionError.

El usuario es responsable de borrar el objeto de respuesta devuelto, aunque esto puede hacerse en la ranura conectada a QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() o QGeoRouteReply::errorOccurred() con deleteLater().

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

Esta señal se emite cuando se ha detectado un error en el procesamiento de reply. Probablemente le seguirá la señal QGeoRoutingManager::finished() .

El error se describirá mediante el código de error error. Si errorString no está vacío, contendrá una descripción textual del error.

Esta señal y QGeoRouteReply::errorOccurred() se emitirán al mismo tiempo.

Nota: No elimine el objeto reply de la ranura conectada a esta señal. Utilice deleteLater() en su lugar.

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

Esta señal se emite cuando reply ha finalizado el procesamiento.

Si reply::error() es igual a QGeoRouteReply::NoError entonces el procesamiento ha finalizado correctamente.

Esta señal y QGeoRouteReply::finished() se emitirán al mismo tiempo.

Nota: No elimine el objeto reply en la ranura conectada a esta señal. Utilice deleteLater() en su lugar.

QLocale QGeoRoutingManager::locale() const

Devuelve la configuración regional utilizada para indicar a este gestor de enrutamiento qué idioma utilizar para las direcciones e instrucciones.

Véase también setLocale().

QString QGeoRoutingManager::managerName() const

Devuelve el nombre del motor que implementa el comportamiento de este gestor de enrutamiento.

La combinación de managerName() y managerVersion() debe ser única entre las implementaciones del complemento.

int QGeoRoutingManager::managerVersion() const

Devuelve la versión del motor que implementa el comportamiento de este gestor de rutinas.

La combinación de managerName() y managerVersion() debe ser única entre las implementaciones del plugin.

QLocale::MeasurementSystem QGeoRoutingManager::measurementSystem() const

Devuelve el sistema de medida utilizado por este gestor.

Si se ha llamado a setMeasurementSystem() entonces el valor devuelto por esta función puede ser diferente al devuelto por locale().measurementSystem(). En cuyo caso el valor devuelto por esta función es el que utilizará el gestor.

Véase también setMeasurementSystem() y setLocale().

void QGeoRoutingManager::setLocale(const QLocale &locale)

Establece la configuración regional que utilizará este gestor en locale.

Si este gestor de enrutamiento admite la devolución de direcciones e instrucciones en diferentes idiomas, se devolverán en el idioma de locale.

Si no se establece, la configuración regional utilizada será por defecto la del sistema.

Véase también locale().

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

Establece el sistema de medición utilizado por este gestor en system.

El sistema de medida puede establecerse independientemente de la configuración regional. Tanto setLocale() como esta función establecen el sistema de medida. Se utilizará el valor establecido por la última función llamada.

Véase también measurementSystem(), locale(), y setLocale().

QGeoRouteRequest::FeatureTypes QGeoRoutingManager::supportedFeatureTypes() const

Devuelve los tipos de características que este gestor puede tener en cuenta durante la planificación de la ruta.

QGeoRouteRequest::FeatureWeights QGeoRoutingManager::supportedFeatureWeights() const

Devuelve las ponderaciones que este gestor puede aplicar a las distintas características durante la planificación de la ruta.

QGeoRouteRequest::ManeuverDetails QGeoRoutingManager::supportedManeuverDetails() const

Devuelve los niveles de detalle de las maniobras de navegación que puede solicitar este gestor.

QGeoRouteRequest::RouteOptimizations QGeoRoutingManager::supportedRouteOptimizations() const

Devuelve las optimizaciones de ruta soportadas por este gestor.

QGeoRouteRequest::SegmentDetails QGeoRoutingManager::supportedSegmentDetails() const

Devuelve los niveles de detalle de los segmentos de enrutamiento que se pueden solicitar con este gestor.

QGeoRouteRequest::TravelModes QGeoRoutingManager::supportedTravelModes() const

Devuelve los modos de viaje soportados por este gestor.

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

Inicia el proceso de actualización de route basado en la posición actual position.

Se devolverá un objeto QGeoRouteReply, que puede utilizarse para gestionar la operación de enrutamiento y para devolver los resultados de la operación.

Este gestor y el objeto QGeoRouteReply devuelto emitirán señales indicando si la operación se completa o si se producen errores.

Si supportsRouteUpdates() devuelve false se producirá un QGeoRouteReply::UnsupportedOptionError.

Una vez completada la operación, se puede utilizar QGeoRouteReply::routes para recuperar la ruta actualizada.

La ruta devuelta podría ser completamente diferente a la ruta original, especialmente si position está lejos de la ruta inicial. En caso contrario, la ruta será similar, aunque se actualizarán el tiempo y la distancia restantes y se eliminarán los segmentos de la ruta original que se hayan recorrido.

El usuario es responsable de borrar el objeto de respuesta devuelto, aunque esto puede hacerse en la ranura conectada a QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() o QGeoRouteReply::errorOccurred() con 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.