Qt 在QML中使用脱机交互式映射

Qt 在QML中使用脱机交互式映射,qt,dictionary,qml,openstreetmap,Qt,Dictionary,Qml,Openstreetmap,我想以osm文件的形式注入我从中获得的映射块 从我在文档中读到的内容来看,似乎没有任何参数将源文件作为映射。它只适用于服务器。问题是在运行我的应用程序时,我并没有互联网连接。我需要在内部使用地图 和插件一样 还有别的办法吗 以下是创建地图的样板: Plugin { id: somePlugin // code here to choose the plugin as necessary } Map { id: map plugin: somePlugin

我想以
osm
文件的形式注入我从中获得的映射块

从我在文档中读到的内容来看,似乎没有任何参数将源文件作为映射。它只适用于服务器。问题是在运行我的应用程序时,我并没有互联网连接。我需要在内部使用地图

和插件一样

还有别的办法吗

以下是创建地图的样板:

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
}

2017年4月更新:QtLocation现在支持离线OSM磁贴。 看

正如您所注意到的,QtLocation当前没有为您提供。另外,对于basemaps,它目前只支持(而不是您所说的XML向量OSM数据)

你有几个选择:

在QML中:您可以使用。 从版本10.26开始,它支持添加带有脱机分幅的自定义地图图层。您需要首先获取OSM数据的PNG/JPG平铺。下面是一个支持OSM SliptyMap瓷砖的应用程序

在C++中:您将发现一些显示矢量数据的选项,这些选项可能需要或不需要从OSM格式进行转换,您还需要做更多工作:

  • QGis是在Qt中制作的,其他许多开源地理项目也是如此,所以它们可能会有所帮助

另外,不要忘记在Qt Bugtracker中投票支持上面提到的问题

您可以生成或下载供脱机使用。要生成平铺,请查看或。可以通过和各种其他工具下载互动程序,但请遵守互动程序服务器的使用策略!下载高缩放分幅会导致分幅服务器上的高负载,因为这些分幅通常不会缓存,需要动态渲染。

尽管这是解决我的问题最方便的功能,但ArcGIS太重(700 MB)。MaxpboxGL似乎是从tiles获取脱机贴图的最简单的方法,但我需要将
QMapboxGL
转换为QML对象。我想知道这是否可行。不幸的是,
QMapboxGL
项目不支持Windows。我需要我的项目是跨平台的。你的应用程序中的ArcGIS运行库只有几百Kbs,所以这应该不是什么大问题。在主机上,你必须在系统级安装它。好吧。我可能会尝试一下,但我还没有找到基本许可证的价格。这似乎不是免费的,但…这是免费的这种功能的一部分,基本的。您只需在Arcgis Online上注册您的应用程序并获取密钥,否则您将在地图上看到水印!我使用Maperitive从我的
osm
文件中生成
png
平铺。现在我需要使用它们来生成地图。您好,先生,我使用相同的方法来生成png文件。然而,在我的例子中,有太多的png文件-缩放级别10-我无法命名它们中的每一个。(png文件的名称应采用此模式osm_100-----。如QtLocation论坛中所述,我可以问一下,您是否遇到了相同的问题?如果遇到了,您如何克服它,因为我看到没有答案。@scai。提前谢谢。抱歉,我不明白您的问题。您不必命名/列出每个文件。文件名s遵循某种模式。您的实际问题是什么?也许您应该创建一个新问题。我使用Mapertive生成png文件(平铺)但是Mapertive并没有遵循这种模式
osm_100-----.
。例如,当我在缩放级别10下载一些平铺时,一些png文件的名称是
202693202694
等等。不幸的是,我必须使用至少缩放级别10,你猜有很多png文件必须逐个命名。我在问,如果发生这种情况我也问过你,你是如何解决这个问题的?或者,可能有其他的瓷砖创建者也遵循这个模式?@scaiunfortional我不能回答这个问题。我从来没有用Qt来显示地图。