QT/QML mapReady 在地图上如何工作?
QT/QML how works mapReady on a map?
我对 mapReady 在 QML 中的工作方式感到困惑。
根据文档 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,仅在地图元素内使用 onMapReadyChanged
我对 mapReady 在 QML 中的工作方式感到困惑。
根据文档 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,仅在地图元素内使用 onMapReadyChanged