Класс QGeoRoutingManager
Класс QGeoRoutingManager предоставляет поддержку операций географического маршрутирования. Подробнее...
| Заголовок: | #include <QGeoRoutingManager> |
| qmake: | QT += location |
| С: | Qt 5.6 |
| Наследует: | 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) |
- 34 открытые функции унаследованные от QObject
Сигналы
| void | error(QGeoRouteReply *reply, QGeoRouteReply::Error error, QString errorString = QString()) |
| void | finished(QGeoRouteReply *reply) |
- 2 сигнала, унаследованные от QObject
Дополнительные унаследованные члены
- 1 свойство, унаследованное от QObject
- 1 открытый слот, унаследованный от QObject
- 1 открытая переменная, унаследованная от QObject
- 10 статические открытые члены, унаследованные от QObject
- 9 защищенные функции, унаследованные от QObject
- 2 защищенные переменные, унаследованные от 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();
}
}; Документация по членам-функциям
[virtual] QGeoRoutingManager::~QGeoRoutingManager()
Уничтожает этот менеджер.
QGeoRouteReply *QGeoRoutingManager::calculateRoute(const QGeoRouteRequest &request)
Начинает вычисление маршрута, указанного в request.
Будет возвращен объект QGeoRouteReply, который может использоваться для управления операцией маршрутизации и возврата результатов операции.
Этот менеджер и возвращаемый объект QGeoRouteReply будут излучать сигналы, указывающие, завершена ли операция или произошли ошибки.
После завершения операции, QGeoRouteReply::routes можно использовать для получения рассчитанного маршрута или маршрутов.
Если request содержит функции, которые не поддерживаются этим менеджером, как сообщается методами в этом менеджере, то произойдет QGeoRouteReply::UnsupportedOptionError.
Пользователь отвечает за удаление возвращаемого объекта ответа, хотя это можно сделать в слоте, подключенном к 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.11/qgeoroutingmanager.html