在QML中使用脱机交互式地图

时间:2016-04-15 12:49:28

标签: qt dictionary qml openstreetmap

我想以osm文件的形式从OpenStreetMap注入一大块地图。

根据我在文档中看到的内容,Open Street Map Plugin似乎没有任何参数将源文件作为地图。它只适用于服务器。问题是我在运行我的应用程序时没有Internet连接。我需要在内部使用地图。

同样适用于MapboxHERE个插件。

还有其他办法吗?

以下是创建Map的样板:

Plugin {
    id: somePlugin
    // code here to choose the plugin as necessary
}

Map {
    id: map

    plugin: somePlugin

    center {
        latitude: -27
        longitude: 153
    }
    zoomLevel: map.minimumZoomLevel

    gesture.enabled: true
}

2 个答案:

答案 0 :(得分:5)

2017年4月更新:QtLocation现在支持离线OSM磁贴。 见http://doc.qt.io/qt-5/location-plugin-osm.html

正如您所说,QtLocation目前没有为您提供offline option此外,对于底图,它目前仅支持image tiles(不是您正在谈论的XML矢量OSM数据)约)。

你有几个选择:

在QML中:您可以使用ArcGIS Runtime SDK for Qt。 从版本10.26开始,它支持使用离线切片添加自定义地图图层。您需要首先获取OSM数据的PNG / JPG图块。这是一个支持OSM slippymap tile的example layer

在C ++中:你会发现一些选项来显示可能需要或不能从OSM格式转换的矢量数据,以及更多的工作:

另外,不要忘记在Qt Bugtracker中投票支持上述问题!

答案 1 :(得分:2)

您可以生成或下载tiles以供离线使用。要生成切片,请查看TileMillMaperitive。可以通过Marble和其他各种工具来下载磁贴,但请尊重磁贴服务器的使用政策!下载高缩放图块会导致图块服务器的负载过高,因为这些图块通常不会被缓存,需要动态渲染。