QGeoRoutingManager Class

QGeoRoutingManager 클래스는 지리적 라우팅 작업을 지원합니다. 더 보기...

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

공용 함수

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)

Signals

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

상세 설명

calculateRoute() 및 updateRoute() 메서드는 이러한 작업을 관리하고 작업 결과 및 발생했을 수 있는 오류를 보고하는 QGeoRouteReply 객체를 함수화합니다.

calculateRoute() 함수는 경유지 집합을 따르고 다른 다양한 기준과 일치하는 경로를 찾는 데 사용됩니다. QGeoRouteRequest 클래스는 이 정보를 지정하는 데 사용됩니다.

supportsRouteUpdates()가 참을 반환하면 QGeoRoutingManager는 위치 업데이트를 기반으로 경로 정보 업데이트를 지원합니다. 이렇게 하면 이동 시간 및 거리 추정치가 업데이트되고 이미 통과한 모든 QGeoRouteSegments가 경로에서 제거됩니다.

업데이트는 updateRoute() 함수로 트리거할 수 있으며, 이 함수는 QGeoPositionInfoSource 에 의해 위치 업데이트로 방출된 QGeoPositionInfo 인스턴스를 사용합니다.

QGeoRoutingManager의 인스턴스는 QGeoServiceProvider::routingManager()로 액세스할 수 있습니다.

다음은 QGeoRoutingManager와 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();
    }
};

멤버 함수 문서

[virtual noexcept] QGeoRoutingManager::~QGeoRoutingManager()

이 관리자를 파괴합니다.

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

request 에 지정된 경로 계산을 시작합니다.

라우팅 작업을 관리하고 작업 결과를 반환하는 데 사용할 수 있는 QGeoRouteReply 객체가 반환됩니다.

이 관리자와 반환된 QGeoRouteReply 객체는 작업이 완료되거나 오류가 발생하면 이를 나타내는 신호를 보냅니다.

작업이 완료되면 QGeoRouteReply::routes 을 사용하여 계산된 경로를 검색할 수 있습니다.

request 에 이 매니저에서 지원하지 않는 기능이 포함되어 있는 경우, 이 매니저의 메서드에서 보고된 대로 QGeoRouteReply::UnsupportedOptionError 이 발생합니다.

반환된 응답 개체를 삭제할 책임은 사용자에게 있지만, QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() 또는 QGeoRouteReply::errorOccurred()에 연결된 슬롯에서 deleteLater()를 사용하여 삭제할 수 있습니다.

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

이 신호는 reply 처리 중 오류가 감지되었을 때 발생합니다. QGeoRoutingManager::finished() 신호가 뒤따를 수 있습니다.

오류는 오류 코드 error 로 설명됩니다. errorString 이 비어 있지 않으면 오류에 대한 텍스트 설명이 포함됩니다.

이 신호와 QGeoRouteReply::errorOccurred() 신호가 동시에 전송됩니다.

참고: 이 신호에 연결된 슬롯의 reply 객체를 삭제하지 마세요. 대신 deleteLater()를 사용하세요.

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

이 신호는 reply 처리가 완료되면 전송됩니다.

reply::error()가 QGeoRouteReply::NoError 와 같으면 처리가 성공적으로 완료된 것입니다.

이 신호와 QGeoRouteReply::finished()가 동시에 전송됩니다.

참고: 이 신호에 연결된 슬롯의 reply 객체를 삭제하지 마세요. 대신 deleteLater()를 사용하세요.

QLocale QGeoRoutingManager::locale() const

주소 및 지침에 사용할 언어에 대해 이 라우팅 관리자에게 힌트를 주는 데 사용되는 로캘을 반환합니다.

setLocale()도 참조하세요 .

QString QGeoRoutingManager::managerName() const

이 라우팅 매니저의 동작을 구현하는 엔진의 이름을 반환합니다.

managerName()과 managerVersion()의 조합은 플러그인 구현 간에 고유해야 합니다.

int QGeoRoutingManager::managerVersion() const

이 루틴 매니저의 동작을 구현하는 엔진의 버전을 반환합니다.

managerName()와 managerVersion()의 조합은 플러그인 구현마다 고유해야 합니다.

QLocale::MeasurementSystem QGeoRoutingManager::measurementSystem() const

이 관리자가 사용하는 측정 시스템을 반환합니다.

setMeasurementSystem()가 호출된 경우 이 함수가 반환하는 값은 locale()에서 반환하는 값과 다를 수 있습니다.measurementSystem(). 이 경우 이 함수가 반환하는 값이 관리자가 사용할 값입니다.

setMeasurementSystem() 및 setLocale()도 참조하세요 .

void QGeoRoutingManager::setLocale(const QLocale &locale)

이 관리자가 사용할 로캘을 locale 로 설정합니다.

이 라우팅 관리자가 다른 언어로 주소 및 지침 반환을 지원하는 경우 locale 의 언어로 반환됩니다.

이 로캘을 설정하지 않으면 기본적으로 시스템 로캘이 사용됩니다.

locale()도 참조하세요 .

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

이 관리자가 사용하는 측정 시스템을 system 으로 설정합니다.

측정 시스템은 로캘과 독립적으로 설정할 수 있습니다. setLocale ()와 이 함수 모두 측정 시스템을 설정합니다. 마지막으로 호출한 함수에 의해 설정된 값이 사용됩니다.

measurementSystem(), locale() 및 setLocale()도 참조하세요 .

QGeoRouteRequest::FeatureTypes QGeoRoutingManager::supportedFeatureTypes() const

이 관리자가 경로 계획 중에 고려할 수 있는 기능의 유형을 반환합니다.

QGeoRouteRequest::FeatureWeights QGeoRoutingManager::supportedFeatureWeights() const

경로 계획 중 이 관리자가 다양한 기능에 적용할 수 있는 가중치를 반환합니다.

QGeoRouteRequest::ManeuverDetails QGeoRoutingManager::supportedManeuverDetails() const

이 관리자가 요청할 수 있는 내비게이션 조작의 세부 수준을 반환합니다.

QGeoRouteRequest::RouteOptimizations QGeoRoutingManager::supportedRouteOptimizations() const

이 관리자가 지원하는 경로 최적화를 반환합니다.

QGeoRouteRequest::SegmentDetails QGeoRoutingManager::supportedSegmentDetails() const

이 매니저로 요청할 수 있는 라우팅 세그먼트의 세부 수준을 반환합니다.

QGeoRouteRequest::TravelModes QGeoRoutingManager::supportedTravelModes() const

이 매니저가 지원하는 여행 모드를 반환합니다.

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

현재 위치 position 를 기반으로 route 업데이트 프로세스를 시작합니다.

라우팅 작업을 관리하고 작업 결과를 반환하는 데 사용할 수 있는 QGeoRouteReply 객체가 반환됩니다.

이 관리자와 반환된 QGeoRouteReply 객체는 작업이 완료되거나 오류가 발생하면 이를 나타내는 신호를 보냅니다.

supportsRouteUpdates()가 false를 반환하면 QGeoRouteReply::UnsupportedOptionError 이 발생합니다.

작업이 완료되면 QGeoRouteReply::routes 을 사용하여 업데이트된 경로를 검색할 수 있습니다.

반환된 경로는 원래 경로와 완전히 다를 수 있으며, 특히 position 이 초기 경로에서 멀리 떨어져 있는 경우 더욱 그렇습니다. 그렇지 않으면 경로가 비슷하지만 남은 시간과 거리가 업데이트되고 원래 경로에서 통과한 구간이 모두 제거됩니다.

반환된 응답 개체를 삭제할 책임은 사용자에게 있지만 QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() 또는 QGeoRouteReply::errorOccurred()에 연결된 슬롯에서 deleteLater()를 사용하여 삭제할 수 있습니다.

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