Qt Location GeoServices
Плагин Qt Location предоставляет большую часть своей функциональности через плагины GeoService. Этот документ описывает, как разработать новый плагин GeoService.
Описание плагина
Каждый плагин описывается файлом json. Файл json описывает возможности и версию плагина. Ниже приведен пример файла json, используемого плагином OpenStreenMap:
{
"Keys": ["osm"],
"Provider": "osm",
"Version": 100,
"Experimental": false,
"Features": [
"OnlineMappingFeature",
"OnlineGeocodingFeature",
"ReverseGeocodingFeature",
"OnlineRoutingFeature",
"OnlinePlacesFeature"
]
} Элементы имеют следующее значение:
| Ключ | Описание |
|---|---|
| Keys | Уникальное имя/ключ плагина. Каждый плагин GeoService должен иметь уникальное имя. |
| Provider | Имя поставщика услуг. Несколько плагинов могут иметь одинаковое имя. В таких случаях для дальнейшего различения плагинов используется строка Version. |
| Experimental | Помечает плагин сервиса как экспериментальный. Разработчики API могут выбрать игнорирование таких плагинов при создании QGeoServiceProvider::QGeoServiceProvider(). |
| Version | Версия плагина. Если несколько плагинов имеют одинаковое имя поставщика, будет использоваться плагин с наивысшей версией. |
| Features | Список функций, предоставляемых плагином/сервисом. Каждая функция — строковое представление соответствующих функций в QGeoServiceProvider. Для получения более подробной информации см. QGeoServiceProvider::routingFeatures(), QGeoServiceProvider::geocodingFeatures() и QGeoServiceProvider::placesFeatures(). |
Реализация плагинов
Разработчик плагина должен унаследовать класс QGeoServiceProviderFactory и столько классов ManagerEngine, сколько необходимо для предоставления реализаций.
Наследование класса QGeoServiceProviderFactory включает переопределение одного из следующих методов:
- QGeoServiceProviderFactory::createGeocodingManagerEngine()
- QGeoServiceProviderFactory::createRoutingManagerEngine()
- QGeoServiceProviderFactory::createPlaceManagerEngine()
Если плагин не предоставляет движок, соответствующая функция должна возвращать 0.
Интерфейс и удобные методы для разработчиков плагинов QGeoServiceProvider, которые хотят предоставить поддержку геокодирования. |
|
Интерфейс и удобные методы для разработчиков плагинов QGeoServiceProvider, которые хотят предоставить доступ к географической информации о маршрутизации. |
|
Класс фабрики, используемый в качестве интерфейса плагина для служб, связанных с географической информацией. |
|
Интерфейс для разработчиков плагинов QGeoServiceProvider, которые хотят предоставить доступ к функциональности мест. |
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/qtlocation-geoservices.html