5

我有自己的本地 Z/X/Y 地图图块服务器,并希望将其用作 QML 应用程序中的地图背景。查看示例代码,这似乎是通过以下方式完成的:-

 Plugin {
    id: osmPlugin
    name: "osm"
 }

所以我需要编写自己的插件。但是文档似乎很少,我找不到 osm 版本的源代码或安装说明。

这是相对容易做到的,还是不用写新插件就可以做到?

4

3 回答 3

4

您可以像这样设置 osm.mapping.host:

    Plugin {
        id: osmPlugin
        name: "osm"


        PluginParameter { name: "osm.mapping.host"; value: "https://tile.openstreetmap.org/" }
        PluginParameter { name: "osm.geocoding.host"; value: "https://nominatim.openstreetmap.org" }
        PluginParameter { name: "osm.routing.host"; value: "https://router.project-osrm.org/viaroute" }
        PluginParameter { name: "osm.places.host"; value: "https://nominatim.openstreetmap.org/search" }
        PluginParameter { name: "osm.mapping.copyright"; value: "" }
        PluginParameter { name: "osm.mapping.highdpi_tiles"; value: true }
    }

但不要忘记使用以下代码设置自定义地图类型:

    Map {
        id: map
        height: parent.width
        width: parent.width
        plugin: osmPlugin

        Component.onCompleted: {
            for( var i_type in supportedMapTypes ) {
                if( supportedMapTypes[i_type].name.localeCompare( "Custom URL Map" ) === 0 ) {
                    activeMapType = supportedMapTypes[i_type]
                }
            }
        }
    }
于 2017-02-24T14:55:35.933 回答
1

如果文档没有涵盖某些内容或不够详细,最好记住Qt 的源代码是公开的。

例如 OSM 插件在这里

如果您知道要查找的类或文件的名称, Woboq 代码浏览器也非常适用

于 2017-02-23T08:18:45.473 回答
1

好的,我已经找到了一种无需编写插件即可做到这一点的方法。

OSM 插件使用 tileserver 来检索切片。该 url 使用插件选项osm.mapping.custom.host设置,将其设置为本地 url 允许我使用我自己的图块,只要它们符合 osm 结构。

于 2017-02-23T20:39:16.483 回答