Плагин QML Map "itemsoverlay" не обрезает базовую карту при большом увеличении с помощью visibleRegion()
У меня есть как-то минимальный пример карты 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)
}
}
}
}
}
1 ответ
Я играл с некоторыми параметрами и нашел решение случайно: заменить
Map {
id: map
// ...
maximumZoomLevel: mapBase.maximumZoomLevel
// ...
}
в
Map {
id: map
// ...
maximumZoomLevel: 30
// ...
}
Тем не менее, я не понимаю, почему последний работает в отличие от первого и если это даже просто ошибка?