Отображать несколько маршрутов на карте с помощью 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, и вам следует использовать эту роль каждый раз, когда вы пытаетесь получить доступ к данным маршрута из модели маршрута.