Qt位置OpenStreetMap插件

概述

此地理服务插件允许应用程序使用Qt位置API访问基于OpenStreetMap的位置服务。

数据、图像和地图信息由ThunderForestOpenStreetMap及其贡献者提供。数据可在开放数据库许可证下使用。

可以通过使用插件键"osm"来加载OpenStreetMap地理服务插件。

注意:标准的地图类型依赖于(部分)免费的数据提供商。我们尽量保持选择的实用性,用于评估和开发目的,但选择适合生产需求的数据提供商是你的责任。强烈建议仔细阅读并遵守各自供应商的服务条款。备选数据提供商列表可在OpenStreetMap维基中找到。此插件提供的可用地图类型可能会(或被移除)不出通知,具体取决于每种类型可公开访问的提供商的实际可用性。这也意味着可以使用通过HTTPS提供瓦片的提供商。当在Android等平台使用OSM插件时,这变得相关,因为这些平台默认没有将SSL支持内置到Qt中。为了避免这些变化,应使用不同的地理服务插件,或将插件参数osm.mapping.providersrepository.address设置为用户指定的仓库,以完全控制选择每种地图类型使用的提供者。从Qt 5.9.6开始,用于地理编码和地点的默认nominatim端点也已更改为仅HTTPS。

参数

可选参数

以下表格列出了可以传递给OpenStreetMap插件的可选参数。

注意:自Qt 5.5以来,以下所有参数必须以 번호 osm 开头。以前的版本不需要前缀。

参数说明
osm.geocoding.host在网络请求中向地理编码服务器发送时设置的URL字符串。此参数应设置为具有正确OSM API的有效服务器URL。如果没有指定,将使用默认的url

注意:API文档可在项目OSM Nominatim中找到。

osm.geocoding.debug_query指示插件将查询URL注入到地理编码回复中,以进行调试目的。
osm.geocoding.include_extended_data指令插件将Nominatim特定的信息(如几何形状和类别)包括到返回的位置对象中,作为扩展属性公开。
osm.mapping.cache.directory用作网络磁盘缓存的地图瓦片缓存目录的绝对路径。

缓存的默认位置是返回的QStandardPaths::writableLocation()地址中QtLocation/osm子目录,由QStandardPaths::GenericCacheLocation作为参数调用。在没有共享缓存概念的系统中,使用应用特定的QStandardPaths::CacheLocation

osm.mapping.cache.disk.cost_strategy用于在磁盘上缓存地图瓦片的成本策略。有效值是bytesizeunitary。使用bytesize,相关的尺寸参数(osm.mapping.cache.disk.size)将解释为字节。使用unitary,它们将被解释为瓦片数量。此参数的默认值是bytesize
osm.mapping.cache.disk.size地图瓦片的磁盘缓存大小。当bytesize是此缓存的成本策略时,缓存默认大小为50 MiB,当unitary是成本策略时,为1000个瓦片。
osm.mapping.cache.memory.cost_strategy用于在内存中缓存地图瓦片的成本策略。有效值是bytesizeunitary。使用bytesize,相关的尺寸参数(osm.mapping.cache.memory.size)将解释为字节。使用unitary,它们将被解释为瓦片数量。此参数的默认值是bytesize
osm.mapping.cache.memory.size地图瓦片的内存缓存大小。当bytesize是此缓存的成本策略时,缓存默认大小为3 MiB,当unitary是成本策略时,为100个瓦片。
osm.mapping.cache.texture.cost_strategy用于在内存中缓存解压缩的地图瓦片的成本策略。有效值是bytesizeunitary。使用bytesize,相关的尺寸参数(osm.mapping.cache.texture.size)将解释为字节。使用unitary,它们将被解释为瓦片数量。此参数的默认值是bytesize
osm.mapping.cache.texture.size地图瓦片的纹理缓存大小。当bytesize是此缓存的成本策略时,缓存默认大小为6 MiB,当unitary是成本策略时,为30个瓦片。请注意,纹理缓存有一个硬最小大小,它取决于地图视口的大小(它必须包含足够的数据来显示显示当前可见的瓦片)。此值是除基本最小值之外的缓存量。
osm.mapping.custom.datacopyright当通过urlprefix参数将Map::activeMapType设置到MapType.CustomMap时,使用自定义数据版权字符串。此版权将仅用于使用上面的CustomMap。如果为空,则不会在自定义地图上显示数据版权。
osm.mapping.custom.host自定义切片服务器的url字符串。此参数应设置为提供正确OSM API的有效服务器url。将在url后添加后缀"%z/%x/%y.png"。自6.5版本起,如果url以".png"结尾,则不会添加后缀。如果服务器需要apikey,则必须将其添加到url字符串中。要使用此服务器,应将Map::activeMapTypeMap参数设置为支持的地图类型,其类型为MapType.CustomMap。此地图类型仅在设置此插件参数的情况下可用,在这种情况下,它始终是Map::supportedMapTypes[supportedMapTypes.length - 1]。

注意:将mapping.custom.host参数设置为新服务器会使旧的自定义地图样式无效。

osm.mapping.custom.mapcopyright自定义地图版权字符串用于通过urlprefix参数将Map::activeMapType设置为MapType.CustomMap时。此版权字符串仅在上述自定义地图中使用。如果为空,自定义地图将不会显示版权信息。
osm.mapping.highdpi_tiles是否请求高DPI瓦片。有效值为truefalse。默认值为false。请注意,并非所有地图类型都支持高DPI。如果当前没有可用的高DPI地图类型,将此参数设置为true可能甚至没有任何效果。高DPI瓦片提供者信息文件的名称为street-hiressatellite-hirescycle-hirestransit-hiresnight-transit-hiresterrain-hireshiking-hires。这些将从与低DPI版本相同的地点获取。
osm.mapping.offline.directory包含用于离线存储的地图瓦片的目录的绝对路径。如果指定,它将与网络磁盘缓存一起工作,但瓦片不会自动插入、删除或更新。瓦片的格式与网络磁盘缓存使用的格式相同。没有默认值,且如果未设置此属性,则不会索引任何目录,并且仅使用网络磁盘缓存以减少网络使用或作为当前缓存的瓦片的离线存储。
osm.mapping.prefetching_style此参数允许为引擎如何执行瓦片预提取提供提示。默认值TwoNeighbourLayers使引擎预提取较当前瓦片层高一层和低一层的瓦片,在从当前缩放级别放大或缩小时的提供可用的瓦片。OneNeighbourLayer仅预提取与当前缩放级别最接近的一层。最后,NoPrefetching允许禁用预提取,因此只获取可见的瓦片。请注意,根据当前的活动地图类型,此提示可能被忽略。
osm.mapping.providersrepository.addressOpenStreetMap插件从远程仓库检索提供者的信息。这是为了避免默认使用硬编码的服务器,这些服务器可能会不可用。默认情况下,此信息从maps-redirect.qt.io获取。设置此参数将更改提供者仓库地址为用户指定的一个,它必须包含文件streetsatellitecycletransitnight-transitterrainhiking,每个都必须包含有效的提供者信息。
osm.mapping.providersrepository.disabled默认情况下,OpenStreetMap插件从远程仓库检索提供者的信息,以避免因硬编码服务的不可用而导致服务中断。但是,插件仍然包含回退硬编码的提供者数据,以防提供者仓库无法访问。设置此参数为true将使插件仅使用硬编码的URL,因此防止插件从远程仓库获取提供者数据。
osm.places.debug_query将此参数设置为true,以在结果中为每个结果添加名为"requestUrl"的扩展属性,并包含用于查询的URL。默认值为false
osm.places.host在向地点服务器发送网络请求时设置的URL字符串。此参数应设置为具有正确OSM API的有效服务器URL。如果没有指定,则默认使用url

注意:API文档可在项目OSM Nominatim中找到。

osm.places.page_size页面中的结果数量。请注意,服务器端可能限制此值。标准nominatim实例的典型最大值是50。
osm.routing.apiversion定义(custom) OSRM服务器的API版本的字符串。有效值为v4v5。默认值为v5。应仅在osm.routing.host设置且为OSRM v4服务器时设置此参数。
osm.routing.host当向路由服务器发起网络请求时设置的URL字符串。此参数应设置为具有正确OSRM API的有效服务器URL。如果没有指定,将使用默认url

注意:API文档和源代码可在Project OSRM获取。

osm.useragent当发起网络请求时设置的User Agent字符串。此参数应设置为一个能唯一标识应用程序的值。请注意,服务提供商可能会阻止没有设置此参数的应用程序,将其设置为默认插件User Agent(例如,用于地理编码的Nominatim)。

参数使用示例

以下示例显示了如何创建一个带有用户代理参数的OSM插件实例,如果需要,还包括自定义服务器URL以及对应图块提供者的版权信息。此外,还可以选择使用除公开osrm以外的其他路由服务器。

QML

Plugin {
    name: "osm"
    PluginParameter { name: "osm.useragent"; value: "My great Qt OSM application" }
    PluginParameter { name: "osm.mapping.host"; value: "http://osm.tile.server.address/" }
    PluginParameter { name: "osm.mapping.copyright"; value: "All mine" }
    PluginParameter { name: "osm.routing.host"; value: "http://osrm.server.address/viaroute" }
    PluginParameter { name: "osm.geocoding.host"; value: "http://geocoding.server.address" }
}

其他插件特定信息

图块缓存

The tiles are cached in a QtLocation/osm directory in QStandardPaths::writableLocation (QStandardPaths::GenericCacheLocation). 在没有共享缓存概念的系统上,将使用应用程序特定的QStandardPaths::CacheLocation

© 2024 Qt公司。此处包含的文档贡献为各自所有者的版权。本提供的文档受GNU自由文档许可证版本1.3 terms约束,由自由软件基金会发布。Qt及其相关标志是芬兰以及/或全世界Qt公司的商标。所有其他商标均为其各自所有者的财产。