我在Qt上使用QML来显示OpenStreetMap(使用osm插件),这需要互联网连接.有没有办法我可以做同样但离线运行?例如,运行我自己的磁贴服务器(但这样做有多容易)?或者使用一个可以让我快速完成的库.
顺便说一下,我在Ubuntu上运行我的程序.
如何做到这一点的任何帮助,特别是如果有人可以提供要完成的步骤,将不胜感激.
谢谢.
我已设法在Qt(使用QML)中按照以下步骤离线显示OpenStreetMap:
在localhost上构建/运行切片服务器.我使用了以下指南:https://switch2osm.org/serving-tiles/building-a-tile-server-from-packages/
在我的Qt中的map.qml文件中,我必须在地图插件中包含以下参数(http://doc.qt.io/qt-5/location-plugin-osm.html):
Plugin { id: osmMapPlugin name: "osm" //provide the address of the tile server to the plugin PluginParameter { name: "osm.mapping.custom.host" value: "http://localhost/osm/" } /*disable retrieval of the providers information from the remote repository. If this parameter is not set to true (as shown here), then while offline, network errors will be generated at run time*/ PluginParameter { name: "osm.mapping.providersrepository.disabled" value: true } }
最后,必须activeMapType
将Map QML类型的属性设置为MapType.CustomMap
(http://doc.qt.io/qt-5/qml-qtlocation-maptype.html),以使地图与本地切片服务器一起使用.