Тип QML MapItemGroup
Тип MapItemGroup представляет собой контейнер для элементов карты. Подробнее...
| Оператор импорта: | import QtLocation 5.11 |
| С момента: | 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/archives/qt-5.11/qml-qtlocation-mapitemgroup.html