Spec-Zone.ru › Qt 5.11

Тип 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API