MapItemGroup QML Type
Le type `MapItemGroup` est un conteneur destiné aux éléments de carte. En savoir plus…
| Import Statement: | import QtLocation 6.12 |
| Since: | QtLocation 5.9 |
- Liste de tous les membres, y compris les membres hérités
- MapItemGroup fait partie du plugin QML Maps.
Description détaillée
Son objectif est de permettre la modularisation du code en autorisant l'utilisation de fichiers QML contenant des éléments de carte liés les uns aux autres, ainsi que les liaisons associées.
Remarque : la publication de cette API avec Qt 5.9 est une préversion technologique.
Exemple d'utilisation
L'extrait de code suivant montre comment utiliser un MapItemGroup pour créer un « MapCircle », centré aux coordonnées (63, -18) avec un rayon de 100 km, rempli de rouge, entouré d'une bordure verte ondulée, le tout contenu dans un cercle bleu semi-transparent avec une contrainte de position ( MouseArea ) qui déplace l'ensemble du groupe. Ce groupe est défini dans un fichier séparé nommé PolygonGroup.qml :
import QtQuick
import QtPositioning
import QtLocation
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 est désormais un composant réutilisable qui peut ensuite être utilisé dans une carte comme suit :
Map {
id: map
PolygonGroup {
id: polygonGroup
position: QtPositioning.coordinate(63,-18)
}
}
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.