QML 地图使用按钮平滑缩放
QML Map Smooth Zooming using Buttons
我正在尝试创建一个小区域的地图。在这张地图上,我有 2 个按钮,一个用于放大,另一个用于缩小。我创建了 2 个按钮和 1 个加载程序,然后将它们连接在一起以使其工作。我的按钮和加载器代码:
Loader.qml
Loader {
id: mapLoader
source: "map.qml"
function reload () {
source = ""
source = "map.qml"
console.log("Map Updated")
}
}
Buttons.qml
// This button zooms in 1 unit
// get_Zoomlevel() works on C++; therefore, it isn'T affected from qml reloads.
Button {
...
onClicked: {
map.setZoomLevel(map.get_ZoomLevel() + 1)
mapLoader.reload()
}
...
}
毕竟,它如预期的那样工作,我可以轻松地放大和缩小。但是,由于加载程序从头开始加载所有地图组件,因此正常和流畅的用户体验需要更长的时间。因此,我正在寻找更好的加载方式或任何其他建议。提前致谢。
我找到了答案,我想为将来分享。
我以为QML Map的zoomLevel 属性只是为了阅读,但我发现我也可以写;因此,当我注意到它就变得简单了。
我创建了一个变量,
property int zoomLv = 15 // default zoom level
每当我使用按钮放大/缩小时,我只是编辑了这个变量,而不是重新加载完整的地图项目。
onClicked: {
zoomLv += 1
}
我正在尝试创建一个小区域的地图。在这张地图上,我有 2 个按钮,一个用于放大,另一个用于缩小。我创建了 2 个按钮和 1 个加载程序,然后将它们连接在一起以使其工作。我的按钮和加载器代码:
Loader.qml
Loader {
id: mapLoader
source: "map.qml"
function reload () {
source = ""
source = "map.qml"
console.log("Map Updated")
}
}
Buttons.qml
// This button zooms in 1 unit
// get_Zoomlevel() works on C++; therefore, it isn'T affected from qml reloads.
Button {
...
onClicked: {
map.setZoomLevel(map.get_ZoomLevel() + 1)
mapLoader.reload()
}
...
}
毕竟,它如预期的那样工作,我可以轻松地放大和缩小。但是,由于加载程序从头开始加载所有地图组件,因此正常和流畅的用户体验需要更长的时间。因此,我正在寻找更好的加载方式或任何其他建议。提前致谢。
我找到了答案,我想为将来分享。 我以为QML Map的zoomLevel 属性只是为了阅读,但我发现我也可以写;因此,当我注意到它就变得简单了。
我创建了一个变量,
property int zoomLv = 15 // default zoom level
每当我使用按钮放大/缩小时,我只是编辑了这个变量,而不是重新加载完整的地图项目。
onClicked: {
zoomLv += 1
}