QT / QML如何在地图上运行mapReady?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT / QML如何在地图上运行mapReady?相关的知识,希望对你有一定的参考价值。

我坚持使用mapReady工作到QML的方式。

根据doc http://doc.qt.io/qt-5/qml-qtlocation-map.html#mapReady-prop,建议使用为此属性发出的信号代替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)
}
答案

您不使用Map.onMapReadyChanged,而只使用Map元素内的onMapReadyChanged

以上是关于QT / QML如何在地图上运行mapReady?的主要内容,如果未能解决你的问题,请参考以下文章

如何在qt qml中更改地图上代表组件的颜色

如何使用 pyinstaller 创建可独立运行的 QML 地图?

如何使用 QML/QtLocation 模块在地图上显示大量离线数据?

Qt QML - 在Qt Location创建我自己的形状

QML-Maps-Qt,用地图点击屏幕,处理并获取坐标

Qt Qml,在 iOS 上将地图(OSM Mapbox Mapboxgl)嵌入到 QQuickWidget C++ 对象中