我有一个QML map (OSM plugin)的最小示例,以及相应的带有插件itemsoverlay的map overlay。无论地图经历什么移动或缩放,下面的代码都会将覆盖裁剪到地图上。
但是,我可以将底图缩放到比最大操作系统缩放级别更近的位置(导致的缩放级别为21.07),例如使用mapBase.visibleRegion = rect (如下所示)。但叠加不会比这个更近,缩放将保持在19级。
您可以通过单击红色圆圈来测试此功能。
你知道如何让覆盖图保持与底图相同的缩放级别吗?
import QtQuick.Window 2.2
import QtQuick 2.7
import QtLocation 5.8
import QtPositioning 5.8
import QtQuick.Controls 2.2
Window {
width: 512
height: 512
visible: true
Map {
id: mapBase
anchors.fill: parent
gesture.enabled: true
plugin: Plugin { name: "osm" }
z: parent.z + 1
maximumZoomLevel: 30
center: QtPositioning.coordinate(51.51939, -0.11832)
Component.onCompleted: {
mapBase.zoomLevel = 19
}
}
Map {
id: map
anchors.fill: parent
plugin: Plugin { name: "itemsoverlay" }
gesture.enabled: false
center: mapBase.center
color: 'transparent'
minimumFieldOfView: mapBase.minimumFieldOfView
maximumFieldOfView: mapBase.maximumFieldOfView
minimumTilt: mapBase.minimumTilt
maximumTilt: mapBase.maximumTilt
minimumZoomLevel: mapBase.minimumZoomLevel
maximumZoomLevel: mapBase.maximumZoomLevel
zoomLevel: mapBase.zoomLevel
tilt: mapBase.tilt;
bearing: mapBase.bearing
fieldOfView: mapBase.fieldOfView
z: mapBase.z + 1
// visibleRegion: mapBase.visibleRegion
anchors.centerIn: parent
MapCircle {
center: QtPositioning.coordinate(51.51939, -0.11832)
radius: 10
color: "red"
MouseArea {
anchors.fill: parent
acceptedButtons: Qt.LeftButton
onClicked: {
var rect = QtPositioning.rectangle(
QtPositioning.coordinate(51.51949, -0.11842),
QtPositioning.coordinate(51.51929, -0.11822))
mapBase.visibleRegion = rect
parent.color = 'green'
console.log(map.zoomLevel, mapBase.zoomLevel)
}
}
}
}
}发布于 2018-05-08 16:20:14
我使用了一些参数,偶然发现了一个修复方法:
Map {
id: map
// ...
maximumZoomLevel: mapBase.maximumZoomLevel
// ...
}至
Map {
id: map
// ...
maximumZoomLevel: 30
// ...
}然而,我不明白为什么后者与前者相反,它甚至只是一个bug?
https://stackoverflow.com/questions/50221708
复制相似问题