PySide6.QtLocation.QGeoRoutingManager

class QGeoRoutingManager

QGeoRoutingManager 类提供了对地理路由操作的支持。更多

PySide6.QtLocation.QGeoRoutingManager 的继承图

概要

方法

信号

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

calculateRoute()updateRoute() 方法操作 QGeoRouteReply 对象,这些对象管理这些操作并报告操作结果以及可能发生的任何错误。

calculateRoute() 函数用于查找遵循一组航点并匹配各种其他条件的路线(或路线)。QGeoRouteRequest 类用于指定此信息。

如果 supportsRouteUpdates() 返回 true,那么 QGeoRoutingManager 支持根据位置更新来更新路线信息。这将导致旅行时间和距离估计被更新,并且任何已经经过的 QGeoRouteSegments 将从路线中移除。

更新可以通过updateRoute()函数触发,该函数利用由QGeoPositionInfoSource发出的位置更新中的QGeoPositionInfo实例。

QGeoRoutingManager 的实例可以通过 routingManager() 访问。

以下是使用QGeoRoutingManager和QGeoRouteRequests的一个小示例:

class RouteHandler(QObject):

    Q_OBJECT
# public
    RouteHandler(QGeoRoutingManager routingManager,
                   QGeoCoordinate origin,
                   QGeoCoordinate destination) {
        request = QGeoRouteRequest(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 not (avoidableFeatures  request.avoidFeatureTypes()):
            # ... inform the user that the routing manager does not
            # provide support for avoiding tolls and/or motor pool lanes ...
            return

        reply = routingManager.calculateRoute(request)
        if reply.isFinished():
            if reply.error() == QGeoRouteReply.NoError:
                routeCalculated(reply)
            else:
                routeError(reply, reply.error(), reply.errorString())

            return

        routingManager.finished.connect(
                self.routeCalculated)
        routingManager.errorOccurred.connect(
                self.routeError)

# private slots
    def routeCalculated(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
            route = reply.routes().at(0)
            #... now we have to make use of the route ...

        reply.deleteLater()

    def routeError(reply, error, errorString):

        # ... inform the user that an error has occurred ...
        reply.deleteLater()
calculateRoute(request)
Parameters:

请求QGeoRouteRequest

Return type:

QGeoRouteReply

开始计算由request指定的路线。

将返回一个QGeoRouteReply对象,该对象可用于管理路由操作并返回操作结果。

此管理器和返回的QGeoRouteReply对象将发出信号,指示操作是否完成或是否发生错误。

操作完成后,可以使用routes来检索计算出的路线或路线。

如果request包含此管理器不支持的功能,如该管理器中的方法所报告的,则会发生UnsupportedOptionError

用户负责删除返回的回复对象,尽管这可以在连接到finished()errorOccurred()finished()errorOccurred()的槽中使用deleteLater()来完成。

errorOccurred(reply, error[, errorString=""])
Parameters:

当在reply的处理过程中检测到错误时,会发出此信号。finished()信号可能会紧随其后。

错误将由错误代码error描述。如果errorString不为空,它将包含错误的文本描述。

此信号和errorOccurred()将同时发出。

注意

不要删除连接到这个信号的槽中的reply对象。请使用deleteLater()代替。

finished(reply)
Parameters:

回复QGeoRouteReply

reply完成处理时,会发出此信号。

如果 reply::error() 等于 NoError,则处理成功完成。

此信号和finished()将同时发出。

注意

不要删除连接到这个信号的槽中的reply对象。请使用deleteLater()代替。

locale()
Return type:

QLocale

返回用于提示此路由管理器关于地址和指令使用何种语言的区域设置。

另请参阅

setLocale()

managerName()
Return type:

字符串

返回实现此路由管理器行为的引擎名称。

managerName() 和 managerVersion() 的组合在插件实现中应该是唯一的。

managerVersion()
Return type:

整数

返回实现此例程管理器行为的引擎版本。

managerName() 和 managerVersion() 的组合在插件实现中应该是唯一的。

measurementSystem()
Return type:

MeasurementSystem

返回此管理器使用的测量系统。

如果已经调用了setMeasurementSystem(),那么此函数返回的值可能与locale().measurementSystem()返回的值不同。在这种情况下,此函数返回的值将是管理器所使用的值。

setLocale(locale)
Parameters:

localeQLocale

设置此管理器使用的区域设置为locale

如果此路由管理器支持以不同语言返回地址和指令,它们将以locale的语言返回。

如果未设置,使用的区域设置默认为系统区域设置。

另请参阅

locale()

setMeasurementSystem(system)
Parameters:

系统MeasurementSystem

将此管理器使用的测量系统设置为system

测量系统可以独立于区域设置进行设置。无论是setLocale()还是此函数都可以设置测量系统。最后调用的函数设置的值将被使用。

supportedFeatureTypes()
Return type:

FeatureType的组合

返回此管理器在路线规划期间可以考虑的特征类型。

supportedFeatureWeights()
Return type:

FeatureWeight的组合

返回此管理器在路线规划期间可以应用于不同特征的权重。

supportedManeuverDetails()
Return type:

ManeuverDetail的组合

返回此管理器可以请求的导航操作的详细级别。

supportedRouteOptimizations()
Return type:

RouteOptimization的组合

返回此管理器支持的路线优化。

supportedSegmentDetails()
Return type:

SegmentDetail的组合

返回可以使用此管理器请求的路由段的详细级别。

supportedTravelModes()
Return type:

TravelMode的组合

返回此管理器支持的出行模式。

updateRoute(route, position)
Parameters:
Return type:

QGeoRouteReply

开始根据当前位置 position 更新 route 的过程。

将返回一个QGeoRouteReply对象,该对象可用于管理路由操作并返回操作结果。

此管理器和返回的QGeoRouteReply对象将发出信号,指示操作是否完成或是否发生错误。

如果 supportsRouteUpdates() 返回 false,将会发生 UnsupportedOptionError

操作完成后,可以使用routes来检索更新后的路由。

返回的路线可能与原始路线完全不同,特别是如果position距离初始路线很远。否则,路线将相似,尽管剩余时间和距离将被更新,并且原始路线中已经经过的部分将被移除。

用户负责删除返回的回复对象,尽管这可以在连接到finished()errorOccurred()finished()errorOccurred()的槽中使用deleteLater()来完成。