我有一个QML地图(OSM插件)和带有插件itemsoverlay
的相应地图覆盖图的最小例子。
无论地图经历什么样的移动或缩放,以下代码都会将叠加层剪切到地图上。
然而,我可以将基本地图缩放得比最大OSM缩放级别更近(导致一些缩放级别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)
}
}
}
}
}
答案 0 :(得分:0)
我正在玩一些参数并偶然发现了一个修复:替换
Map {
id: map
// ...
maximumZoomLevel: mapBase.maximumZoomLevel
// ...
}
到
Map {
id: map
// ...
maximumZoomLevel: 30
// ...
}
然而,我不明白为什么后者与前者形成对比,如果它甚至只是一个错误呢?