Sur cette page

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

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)
    }
}

Polygones rouges et verts qui se chevauchent, tracés sur une carte de l'Islande

© 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.