Плагин QML Map "itemsoverlay" не обрезает базовую карту при большом увеличении с помощью visibleRegion () - PullRequest
0 голосов
/ 07 мая 2018

У меня есть несколько минимальный пример карты 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 Ответ

0 голосов
/ 08 мая 2018

Я играл с некоторыми параметрами и случайно нашел исправление: замените

Map {
    id: map
    // ...
    maximumZoomLevel: mapBase.maximumZoomLevel
    // ...
}

до

Map {
    id: map
    // ...
    maximumZoomLevel: 30
    // ...
}

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

...