Отображать несколько маршрутов на карте с помощью RouteMap QML Qt

Я хочу отобразить список маршрутов на карте, используя свойства Qt Location, мне удалось отобразить один маршрут, но я не знаю, как отобразить несколько. Вот мой код:

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 ответа

Я просто пытался выполнить ту же задачу, просто выполнил ИТ. Как и в первой попытке, вы должны добавить несколько точек 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();
    }

Результаты в:Несколько маршрутов

Просто интересно, как мне получить точные данные на каждой остановке маршрута.

Отображение всех маршрутов, возвращаемых из запроса, обычно работает из коробки (при условии, что используемый плагин дает вам более одного результата на запрос маршрута).

Если вы хотите одновременно отображать маршруты для нескольких запросов, вам нужна одна модель / представление для каждого запроса, который вы хотите отобразить одновременно

Я заканчиваю тем, что в вашем примере вы неправильно используете роли моделей. Нет таких routeData1 или routeData2, но есть только routeData, и вам следует использовать эту роль каждый раз, когда вы пытаетесь получить доступ к данным маршрута из модели маршрута.

Другие вопросы по тегам