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) |
신호
| void | errorOccurred(QGeoRouteReply *reply, QGeoRouteReply::Error error, const QString &errorString = QString()) |
| void | finished(QGeoRouteReply *reply) |
상세 설명
calculateRoute() 및 updateRoute() 메서드는 이러한 작업을 관리하고 작업 결과 및 발생했을 수 있는 오류를 보고하는 QGeoRouteReply 객체를 매개변수로 사용합니다.
calculateRoute() 함수는 일련의 경유점을 따르고 다양한 다른 기준에 부합하는 경로(들)를 찾는 데 사용됩니다. QGeoRouteRequest 클래스는 이 정보를 지정하는 데 사용됩니다.
supportsRouteUpdates()가 true를 반환하면, 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 가 발생합니다.
반환된 reply 객체를 삭제하는 것은 사용자의 책임이지만, 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 가 초기 경로에서 멀리 떨어져 있는 경우 더욱 그러합니다. 그렇지 않은 경우 경로는 비슷하겠지만, 남은 시간과 거리는 업데이트되고 원래 경로 중 이미 통과한 구간은 제거됩니다.
반환된 reply 객체를 삭제하는 것은 사용자의 책임이지만, 이는 QGeoRoutingManager::finished(), QGeoRoutingManager::errorOccurred(), QGeoRouteReply::finished() 또는 QGeoRouteReply::errorOccurred()에 연결된 슬롯에서 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.