Плагин 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
    // ...
}

Тем не менее, я не понимаю, почему последний работает в отличие от первого и если это даже просто ошибка?

Другие вопросы по тегам