Тип QML MapItemGroup
Тип MapItemGroup — это контейнер для элементов карты. Подробнее...
| Заявление об импорте: | import QtLocation 5.15 |
| С: | QtLocation 5.9 |
Подробное описание
Его предназначение — возможность модульной разработки, позволяя использовать файлы qml, содержащие связанные друг с другом элементы карты и соответствующие привязки.
Примечание: Выпуск этого API с Qt 5.9 является предварительной технологией.
Пример использования
Следующий фрагмент кода демонстрирует, как использовать MapItemGroup для создания MapCircle, центрированного в координатах (63, -18) с радиусом 100 км, заполненного красным цветом, окруженного волнистой зеленой границей, оба содержатся в полупрозрачном синем круге с MouseArea, перемещающим всю группу. Эта группа определена в отдельном файле с именем PolygonGroup.qml:
import QtQuick 2.4
import QtPositioning 5.6
import QtLocation 5.9
MapItemGroup {
id: itemGroup
property alias position: mainCircle.center
property var radius: 100 * 1000
property var borderHeightPct : 0.3
MapCircle {
id: mainCircle
center : QtPositioning.coordinate(40, 0)
radius: itemGroup.radius * (1.0 + borderHeightPct)
opacity: 0.05
visible: true
color: 'blue'
MouseArea{
anchors.fill: parent
drag.target: parent
id: maItemGroup
}
}
MapCircle {
id: groupCircle
center: itemGroup.position
radius: itemGroup.radius
color: 'crimson'
onCenterChanged: {
groupPolyline.populateBorder();
}
}
MapPolyline {
id: groupPolyline
line.color: 'green'
line.width: 3
function populateBorder() {
groupPolyline.path = [] // clearing the path
var waveLength = 8.0;
var waveAmplitude = groupCircle.radius * borderHeightPct;
for (var i=0; i <= 360; i++) {
var wavePhase = (i/360.0 * 2.0 * Math.PI )* waveLength
var waveHeight = (Math.cos(wavePhase) + 1.0) / 2.0
groupPolyline.addCoordinate(groupCircle.center.atDistanceAndAzimuth(groupCircle.radius + waveAmplitude * waveHeight , i))
}
}
Component.onCompleted: {
populateBorder()
}
}
} Теперь PolygonGroup.qml является многократно используемым компонентом, который затем может быть использован в карте как:
Map {
id: map
PolygonGroup {
id: polygonGroup
position: QtPositioning.coordinate(63,-18)
}
}
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.15/qml-qtlocation-mapitemgroup.html