首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QML地图插件"itemsoverlay“不能裁剪到底图进行大缩放,使用visibleRegion()

QML地图插件"itemsoverlay“不能裁剪到底图进行大缩放,使用visibleRegion()
EN

Stack Overflow用户
提问于 2018-05-08 04:08:52
回答 1查看 310关注 0票数 1

我有一个QML map (OSM plugin)的最小示例,以及相应的带有插件itemsoverlay的map overlay。无论地图经历什么移动或缩放,下面的代码都会将覆盖裁剪到地图上。

但是,我可以将底图缩放到比最大操作系统缩放级别更近的位置(导致的缩放级别为21.07),例如使用mapBase.visibleRegion = rect (如下所示)。但叠加不会比这个更近,缩放将保持在19级。

您可以通过单击红色圆圈来测试此功能。

你知道如何让覆盖图保持与底图相同的缩放级别吗?

代码语言:javascript
复制
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)
                }
            }
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-05-08 16:20:14

我使用了一些参数,偶然发现了一个修复方法:

代码语言:javascript
复制
Map {
    id: map
    // ...
    maximumZoomLevel: mapBase.maximumZoomLevel
    // ...
}

代码语言:javascript
复制
Map {
    id: map
    // ...
    maximumZoomLevel: 30
    // ...
}

然而,我不明白为什么后者与前者相反,它甚至只是一个bug?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50221708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档