如何在QML中创建在线/离线地图?

时间:2018-05-15 08:26:25

标签: qt plugins qml openstreetmap

目前我有这张地图。我的问题是插件参数" osm.mapping.offline.directory"加载缓存中的所有切片。如果我在文件夹中有20000个图块,他会尝试加载所有这些图块。这需要很多时间。

如何告诉OSM插件他应该加载多少个图块。 如果这不起作用,我是否写了一个新的插件?

Map
{
    id: map
    anchors.fill: parent
    zoomLevel: 14

    property bool isMapOnline = false

    Component.onCompleted: map.plugin = _guiMap.mapIsOnline ? osmPlugin : offlinePlugin

    Plugin
    {
        id: osmPlugin
        name: "osm"
        PluginParameter { name: "osm.mapping.host"; value: "http://tile.openstreetmap.org/" }
        PluginParameter { name: "osm.mapping.providersrepository.disabled"; value: "true" }
    }

    Plugin
    {
        id: offlinePlugin
        name: "osm"
        PluginParameter { name: "osm.mapping.offline.directory"; value: "C:/Tiles" }
    }

1 个答案:

答案 0 :(得分:0)

我有一个工作解决方案,看上去与您的解决方案非常相似。
首先,修复属性初始化中的语法错误。

  

属性bool isMapOnline:否


其次,替换

  

Component.onCompleted:map.plugin = _guiMap.mapIsOnline吗? osmPlugin:offlinePlugin

使用

  

插件:isMapOnline? osmPlugin:offlinePlugin

还有一些其他细微的差异;但是,这应该可以使您工作。