Плагин Qt Location Open Street Map
Обзор
Этот плагин геосервисов позволяет приложениям получать доступ к службам геолокации OpenStreetMap с помощью API Qt Location.
Данные, изображения и информация о картах предоставляются OpenMapSurfer, ThunderForest, OpenStreetMap и участниками проекта. Данные доступны по лицензии Open Database License.
Плагин геосервисов OpenStreetMap может быть загружен с использованием ключа плагина «osm».
Примечание: Начиная с Qt 5.6.2, доступные типы карт, предлагаемые этим плагином, могут изменяться (или быть удалены) без предварительного уведомления в зависимости от фактической доступности жизнеспособного открытого поставщика для каждого типа. Это также означает, что могут использоваться поставщики, предоставляющие тайлы по протоколу HTTPS. Это становится актуальным при использовании плагина OSM на таких платформах, как Android, для которых поддержка SSL не включена в Qt по умолчанию. Чтобы предотвратить эти изменения, следует использовать другой плагин геосервисов или установить параметр плагина osm.mapping.providersrepository.address на указанный пользователем репозиторий, чтобы полностью контролировать (и принять на себя ответственность за) выбор поставщика для каждого типа карты. Начиная с Qt 5.9.6, конечная точка nominatim по умолчанию, используемая для геокодирования и поиска мест, также изменилась на HTTPS-только.
Параметры
Дополнительные параметры
В следующей таблице перечислены дополнительные параметры, которые можно передать плагину OpenStreetMap.
Примечание: Начиная с Qt 5.5, все параметры ниже должны быть префиксрованы с osm. В предыдущих версиях префикс не требовался.
| Параметр | Описание |
|---|---|
| osm.geocoding.host | Строка URL, устанавливаемая при выполнении сетевых запросов к серверу геокодирования. Этот параметр должен быть установлен на корректный URL-адрес сервера с соответствующим API OSM. Если не указан, используется значение по умолчанию url. Примечание: Документация API доступна на сайте проекта OSM Nominatim. |
| osm.geocoding.debug_query | Указывает плагину вставить URL запроса к Nominatim в ответ геокодирования для целей отладки. |
| osm.geocoding.include_extended_data | Указывает плагину включить информацию, специфичную для Nominatim (такую как геометрия и класс), в возвращаемые объекты Location, представленные как extendedAttributes. |
| osm.mapping.cache.directory | Абсолютный путь к каталогу кэша тайлов карты, используемому в качестве кэша на диске. По умолчанию, кэш размещается в подкаталоге |
| osm.mapping.cache.disk.cost_strategy | Стратегия расчёта стоимости для кэширования тайлов карты на диске. Допустимые значения: bytesize и unitary. При использовании bytesize, связанный параметр (osm.mapping.cache.disk.size) будет интерпретирован как количество байтов. При использовании unitary, они будут интерпретированы как количество тайлов. Значение по умолчанию для этого параметра — bytesize. |
| osm.mapping.cache.disk.size | Размер кэша на диске для тайлов карты. По умолчанию размер кэша составляет 50 МБ, когда bytesize является стратегией расчёта стоимости для этого кэша, или 1000 тайлов, когда unitary является стратегией расчёта стоимости. |
| osm.mapping.cache.memory.cost_strategy | Стратегия расчёта стоимости для кэширования тайлов карты в оперативной памяти. Допустимые значения: bytesize и unitary. При использовании bytesize, связанный параметр (osm.mapping.cache.memory.size) будет интерпретирован как количество байтов. При использовании unitary, они будут интерпретированы как количество тайлов. Значение по умолчанию для этого параметра — bytesize. |
| osm.mapping.cache.memory.size | Размер кэша в оперативной памяти для тайлов карты. По умолчанию размер кэша составляет 3 МБ, когда bytesize является стратегией расчёта стоимости для этого кэша, или 100 тайлов, когда unitary является стратегией расчёта стоимости. |
| osm.mapping.cache.texture.cost_strategy | Стратегия расчёта стоимости для кэширования декомпрессированных тайлов карты в оперативной памяти. Допустимые значения: bytesize и unitary. При использовании bytesize, связанный параметр (osm.mapping.cache.texture.size) будет интерпретирован как количество байтов. При использовании unitary, они будут интерпретированы как количество тайлов. Значение по умолчанию для этого параметра — bytesize. |
| osm.mapping.cache.texture.size | Размер текстурного кэша для тайлов карты. По умолчанию размер кэша составляет 6 МБ, когда bytesize является стратегией расчёта стоимости для этого кэша, или 30 тайлов, когда unitary является стратегией расчёта стоимости. Обратите внимание, что у текстурного кэша есть минимальный размер, который зависит от размера области видимости карты (он должен содержать достаточно данных для отображения тайлов, которые в данный момент видны на экране). Это значение — количество кэша, используемое в дополнение к минимальному необходимому объёму. |
| osm.mapping.custom.datacopyright | Строка авторских прав на пользовательские данные используется при установке Map::activeMapType на MapType.CustomMap через параметр urlprefix. Эти авторские права будут использоваться только при использовании CustomMap. Если пусто, для пользовательской карты не будет отображаться информация об авторских правах на данные. |
| osm.mapping.custom.host | Строка URL пользовательского сервера тайлов. Этот параметр должен быть установлен на корректный URL-адрес сервера, предоставляющего соответствующий API OSM. Для использования этого сервера, параметр Map::activeMapType для Map должен быть установлен на поддерживаемый тип карты MapType.CustomMap. Этот тип карты доступен только при установке этого параметра плагина, в этом случае он всегда является Map::supportedMapTypes[supportedMapTypes.length - 1]. Примечание: Установка параметра mapping.custom.host на новый сервер делает кэш тайлов карты бесполезным для старого стиля custommap. |
| osm.mapping.custom.mapcopyright | Строка авторских прав на пользовательскую карту используется при установке Map::activeMapType на MapType.CustomMap через параметр urlprefix. Эти авторские права будут использоваться только при использовании CustomMap. Если пусто, для пользовательской карты не будет отображаться информация об авторских правах на карту. |
| osm.mapping.highdpi_tiles | Указывает, запрашивать ли тайлы с высоким разрешением. Допустимые значения: true и false. Значение по умолчанию — false. Обратите внимание, что не все типы карт доступны в высоком разрешении. Установка этого параметра в true может даже не иметь эффекта, если в данный момент нет доступных типов карт с высоким разрешением. Файлы с информацией о провайдерах для тайлов с высоким разрешением имеют имена street-hires, satellite-hires, cycle-hires, transit-hires, night-transit-hires, terrain-hires и hiking-hires. Они извлекаются из того же расположения, что и их аналоги с низким разрешением. |
| osm.mapping.offline.directory | Абсолютный путь к каталогу, содержащему тайлы карты, используемые в качестве автономного хранилища. Если указано, он будет работать совместно с кэшем на диске, но тайлы не будут автоматически вставляться, удаляться или обновляться. Формат тайлов такой же, как у кэша на диске. Значение по умолчанию отсутствует, и если этот параметр не установлен, ни один каталог не будет проиндексирован, и будет использоваться только кэш на диске для уменьшения использования сети или в качестве автономного хранилища для текущих кэшированных тайлов. |
| osm.mapping.prefetching_style | Этот параметр позволяет указать, как должно выполняться предварительная загрузка тайлов движком. Значение по умолчанию, TwoNeighbourLayers, заставляет движок предварительно загружать тайлы для слоя над текущим и слоя под текущим слоем тайлов, предоставляя готовые тайлы при приближении или отдалении от текущего уровня масштабирования. OneNeighbourLayer предварительно загружает только один слой, ближайший к текущему уровню масштабирования. Наконец, NoPrefetching позволяет отключить предварительную загрузку, так что будут загружаться только видимые тайлы. Обратите внимание, что в зависимости от активного типа карты, этот параметр может быть проигнорирован. |
| osm.mapping.providersrepository.address | Плагин OpenStreetMap извлекает информацию о провайдере из удалённого репозитория. Это делается для предотвращения использования жёстко закодированных серверов по умолчанию, которые могут стать недоступными. По умолчанию эта информация извлекается с maps-redirect.qt.io. Установка этого параметра изменяет адрес репозитория провайдеров на указанный пользователем, который должен содержать файлы street, satellite, cycle, transit, night-transit, terrain и hiking, каждый из которых должен содержать корректную информацию о провайдере. |
| osm.mapping.providersrepository.disabled | По умолчанию плагин OpenStreetMap извлекает информацию о провайдере из удалённого репозитория, чтобы избежать потери сервиса из-за недоступности жёстко закодированных сервисов. Тем не менее, плагин по-прежнему содержит резервные жёстко закодированные данные о провайдерах на случай, если репозиторий провайдеров станет недоступным. Установка этого параметра в true заставляет плагин использовать только жёстко закодированные URL-адреса и, таким образом, предотвращает извлечение плагином данных о провайдере из удалённого репозитория. |
| osm.places.debug_query | Установите этот параметр в true, чтобы получить расширенный атрибут в каждом результате с именем «requestUrl», содержащий URL, используемый для запроса. По умолчанию false. |
| osm.places.host | Строка URL, устанавливаемая при выполнении сетевых запросов к серверу мест. Этот параметр должен быть установлен на корректный URL-адрес сервера с соответствующим API OSM. Если не указан, используется значение по умолчанию url. Примечание: Документация API доступна на сайте проекта OSM Nominatim. |
| osm.places.page_size | Количество результатов на странице. Обратите внимание, что это значение может быть ограничено на стороне сервера. Типичный максимальный размер в стандартных экземплярах nominatim — 50. |
| osm.routing.apiversion | Строка, определяющая версию API сервера (пользовательского) OSRM. Допустимые значения: v4 и v5. Значение по умолчанию — v5. Этот параметр должен быть установлен только если osm.routing.host установлен, и это сервер OSRM v4. |
| osm.routing.host | Строка URL, устанавливаемая при выполнении сетевых запросов к серверу маршрутизации. Этот параметр должен быть установлен на корректный URL-адрес сервера с соответствующим API OSRM. Если не указан, используется значение по умолчанию url. Примечание: Документация API и исходные коды доступны на сайте проекта OSRM. |
| osm.useragent | Строка User-agent, устанавливаемая при выполнении сетевых запросов. Этот параметр должен быть установлен на значение, уникально идентифицирующее приложение. Обратите внимание, что провайдеры могут блокировать приложения, не устанавливающие этот параметр, оставляя его по умолчанию (например, Nominatim для геокодирования). |
Пример использования параметров
Следующий пример демонстрирует, как создать экземпляр плагина OSM с параметрами для useragent и, при необходимости, пользовательского 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" }
} Дополнительная информация, специфичная для плагина
Кэш тайлов
Плитки кешируются в каталоге QtLocation/osm в QStandardPaths::writableLocation (QStandardPaths::GenericCacheLocation). В системах, не имеющих понятия общего кэша, используется локальный кэш приложения QStandardPaths::CacheLocation.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/location-plugin-osm.html