QT/QML, как работает mapReady на карте?

Я застрял на том, как mapReady работает в QML.

Согласно документу http://doc.qt.io/qt-5/qml-qtlocation-map.html, рекомендуется использовать сигнал, испускаемый для этого свойства, вместо Component.onCompleted

Из этого простого кода main.qml

import QtQuick 2.0
import QtQuick.Window 2.0
import QtLocation 5.6
import QtPositioning 5.6

Window {
    width: 512
    height: 512
    visible: true

    Item{
        anchors.fill: parent
        objectName: "bboxObj"

        Map {
            anchors.fill: parent
            id: map
            plugin: Plugin{name: "osm"}
            zoomLevel: (maximumZoomLevel - minimumZoomLevel)/2
            center: QtPositioning.coordinate(59.91, 10.75) // Oslo
        }

        Component.onCompleted:{
            console.log("mapReady : " + map.mapReady)
            console.log("visibleRegion : " + map.visibleRegion.boundingGeoRectangle())
        }

    }

}

Результаты:

qml: mapReady : false
qml: visibleRegion : QGeoRectangle({nan, nan}, {nan, nan})

Как использовать это onMapReady для вызова visibleRegion после того, как карта готова?

Я пробовал это без успеха:

Map.onMapReadyChanged: {
    console.log("mapReady : " + map.mapReady)
    console.log("visibleRegion : " + map.visibleRegion.boundingGeoRectangle())
    console.log("visibleRegion.isValid : " + map.visibleRegion.isValid)
    console.log("visibleRegion.isEmpty : " + map.visibleRegion.isEmpty)
}

1 ответ

Решение

Вы не используете Map.onMapReadyChanged, а только onMapReadyChanged внутри элемента Map

Другие вопросы по тегам