Класс QGeoRoutingManager
Класс QGeoRoutingManager предоставляет поддержку географических операций маршрутизации. Подробнее...
| Заголовок: | #include <QGeoRoutingManager> |
| qmake: | QT += location |
| С момента: | Qt 5.6 |
| Наследует: | QObject |
Открытые функции
| ~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) |
- 31 открытых функций унаследованных от QObject
Сигналы
| void | error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString()) |
| void | finished(QGeoRouteReply *reply) |
- 2 сигнала унаследованных от QObject
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 11 статические открытые члены, унаследованные от QObject
- 9 защищенные функции, унаследованные от QObject
Подробное описание
Класс QGeoRoutingManager предоставляет поддержку географических операций маршрутизации.
Методы calculateRoute() и updateRoute() работают с объектами QGeoRouteReply, которые управляют этими операциями и сообщают о результатах операций и любых возникших ошибках.
Функция calculateRoute() используется для поиска маршрута (или маршрутов), который следует по заданным точкам и соответствует различным другим критериям. Для указания этой информации используется класс QGeoRouteRequest.
Если функция supportsRouteUpdates() возвращает true, то QGeoRoutingManager поддерживает обновление информации о маршруте на основе обновлений позиции. Это приведет к обновлению оценок времени и расстояния и удалению любых уже пройденных QGeoRouteSegments из маршрута.
Обновления могут быть инициированы функцией updateRoute(), которая использует экземпляры QGeoPositionInfo, передаваемые в качестве обновлений позиции QGeoPositionInfoSource.
К экземплярам QGeoRoutingManager можно получить доступ с помощью QGeoServiceProvider::routingManager().
Следующий небольшой пример демонстрирует использование QGeoRoutingManager и QGeoRouteRequests:
class MyRouteHandler : public QObject
{
Q_OBJECT
public:
MyRouteHandler(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,
SIGNAL(finished(QGeoRouteReply*)),
this,
SLOT(routeCalculated(QGeoRouteReply*)));
connect(routingManager,
SIGNAL(error(QGeoRouteReply*,QGeoRouteReply::Error,QString)),
this,
SLOT(routeError(QGeoRouteReply*,QGeoRouteReply::Error,QString)));
}
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();
}
}; Документация по членам-функциям
QGeoRoutingManager::~QGeoRoutingManager()
Уничтожает этот менеджер.
QGeoRouteReply *QGeoRoutingManager::calculateRoute(const QGeoRouteRequest &request)
Начинает вычисление маршрута, заданного параметром request.
Будет возвращён объект QGeoRouteReply, который можно использовать для управления операцией маршрутизации и получения результатов операции.
Этот менеджер и возвращённый объект QGeoRouteReply будут генерировать сигналы, указывающие на завершение операции или возникновение ошибок.
После завершения операции с помощью QGeoRouteReply::routes можно получить рассчитанный маршрут или маршруты.
Если request включает функции, которые не поддерживаются этим менеджером, как сообщается методами в этом менеджере, то произойдёт ошибка QGeoRouteReply::UnsupportedOptionError.
Пользователь отвечает за удаление возвращённого объекта reply, хотя это можно сделать в слоте, подключенном к QGeoRoutingManager::finished(), QGeoRoutingManager::error(), QGeoRouteReply::finished() или QGeoRouteReply::error() с помощью deleteLater().
[signal] void QGeoRoutingManager::error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString())
Этот сигнал излучается, когда при обработке reply была обнаружена ошибка. Вероятно, последует сигнал QGeoRoutingManager::finished().
Ошибка будет описана кодом ошибки error. Если errorString не пусто, то она будет содержать текстовое описание ошибки.
Этот сигнал и QGeoRouteReply::error() будут излучаться одновременно.
Примечание: Не удаляйте объект 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)
Начинает процесс обновления route на основе текущего положения position.
Будет возвращен объект QGeoRouteReply, который можно использовать для управления операцией маршрутизации и для возврата результатов операции.
Этот менеджер и возвращаемый объект QGeoRouteReply будут излучать сигналы, указывающие на завершение операции или возникновение ошибок.
Если функция supportsRouteUpdates() возвращает false, произойдет ошибка QGeoRouteReply::UnsupportedOptionError.
После завершения операции можно использовать QGeoRouteReply::routes для получения обновленного маршрута.
Возвращаемый маршрут может полностью отличаться от исходного, особенно если position находится далеко от начального маршрута. В противном случае маршрут будет похожим, хотя оставшееся время и расстояние будут обновлены, а любые сегменты исходного маршрута, которые уже пройдены, будут удалены.
Пользователь отвечает за удаление возвращаемого объекта ответа, хотя это можно сделать в слоте, подключенном к QGeoRoutingManager::finished(), QGeoRoutingManager::error(), QGeoRouteReply::finished() или QGeoRouteReply::error() с помощью deleteLater().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qgeoroutingmanager.html