使用RouteMap QML Qt

时间:2018-04-20 13:55:59

标签: qt qml qtlocation

我想使用Qt位置属性在地图上显示路线列表,我能够显示一条路线,但我不知道如何显示多条路线。这是我的代码:

RouteModel {
    id: routeModel
    plugin: somePlugin

    query: RouteQuery {}
    Component.onCompleted: {
        query.addWaypoint(QtPositioning.coordinate(26.328045523310905, 50.080033033011546));
        query.addWaypoint(QtPositioning.coordinate(26.333615791655415, 50.097984054173025));
        routeModel.update();
        query.addWaypoint(QtPositioning.coordinate(26.291584, 50.199094));
        query.addWaypoint(QtPositioning.coordinate(26.288128, 50.188725));
        routeModel.update();
    }

    onStatusChanged: console.debug("current route model status", status, count, errorString)
}

我希望每一对addWayPoints都是一条独特的路线。我怎么能实现这个目标?

我添加了多个模型及其对应的mapitemview,但它仍然没有用。

RouteModel {
    id: routeModel
    plugin: somePlugin
    query: RouteQuery {}
    Component.onCompleted: {
        query.addWaypoint(QtPositioning.coordinate(26.328045523310905, 50.080033033011546));
        query.addWaypoint(QtPositioning.coordinate(26.333615791655415, 50.097984054173025));
        routeModel.update();
    }
}

RouteModel {
    id: rm
    plugin: somePlugin
    query: RouteQuery {}
    Component.onCompleted: {
        query.addWaypoint(QtPositioning.coordinate(26.291584, 50.199094));
        query.addWaypoint(QtPositioning.coordinate(26.288128, 50.188725));
        rm.update();
    }
}

RouteModel {
    id: rm1
    plugin: somePlugin
    query: RouteQuery {}
    Component.onCompleted: {
        query.addWaypoint(QtPositioning.coordinate(26.278496, 50.203740));
        query.addWaypoint(QtPositioning.coordinate(26.272351, 50.185939));
        rm.update();
    }
}

Map {
    id: map
    anchors.fill: parent
    plugin: somePlugin
    center: magione
    gesture.enabled: true
    zoomLevel: 13


    MapItemView {
        model: routeModel
        delegate: MapRoute {
            route: routeData
            line.color: "blue"
            line.width: 5
            smooth: true
        }
    }

    MapItemView {
        model: rm
        delegate: MapRoute {
            route: routeData1
            line.color: "green"
            line.width: 5
            smooth: true
        }
    }

    MapItemView {
        model: rm2
        delegate: MapRoute {
            route: routeData2
            line.color: "black"
            line.width: 5
            smooth: true
        }
    }
}

2 个答案:

答案 0 :(得分:0)

我只是想做同样的任务,只是完成了 IT。与您的第一次尝试一样,您应该添加多个 addWayPoints,但最后只更新一次模型。下面是一个路线示例,访问以下地点 A->B->C->A

    Component.onCompleted:
    {
        query.addWaypoint(QtPositioning.coordinate(-25.402340, -49.248682));
        query.addWaypoint(QtPositioning.coordinate(-25.392142, -49.202556));
        query.addWaypoint(QtPositioning.coordinate(-25.372512, -49.227785));
        query.addWaypoint(QtPositioning.coordinate(-25.402340, -49.248682));
        routeModel.update();
    }

结果:多条路线:
Multiple routes

现在只是想知道如何在每个路线停靠点精确定位。

答案 1 :(得分:-1)

显示从查询返回的所有路由通常都是开箱即用的(假设您使用的插件为每个路由请求提供多个结果)。

如果要同时显示多个请求的路径,则每个要同时显示的请求需要一个模型/视图

我完成了指出,在您的示例中,您使用的模型角色错误。 没有这样的 routeData1 routeData2 ,但只有 routeData ,您应该使用此角色< / strong>每次尝试从路径模型访问路径数据时。