联系作者QQ 843230304
QGC地图框架是 QGroundControl 基于 Qt 地图插件机制 实现的 。
QT地理服务插件 接口类是 QGeoServiceProviderFactory
所以要实现 QGC地理服务插件QGeoServiceProviderFactoryQGC
需要自己定义实现 4个接口虚函数:
/*!
* \brief QGC位置地理编码引擎,
* 返回一个用参数初始化的新QGeoCodingManagerEngine实例,该实例实现 位置地理编码 功能。
* \param parameters
* \param error
* \param errorString
* \return
*/
QGeoCodingManagerEngine* createGeocodingManagerEngine (const QVariantMap ¶meters, QGeoServiceProvider::Error *error, QString *errorString) const;
/*!
* \brief QGC瓦片地图映射管理器引擎,
* 返回一个用参数初始化的新QGeoMappingManagerEngine实例,该实例实现 基本地图 功能。
* \param parameters
* \param error
* \param errorString
* \return
*/
QGeoMappingManagerEngine* createMappingManagerEngine (const QVariantMap ¶meters, QGeoServiceProvider::Error *error, QString *errorString) const;
/*!
* \brief 返回一个用参数初始化的新QGeoRoutingManagerEngine实例,该实例实现 路径规划 功能。
* \param parameters
* \param error
* \param errorString
* \return
*/
QGeoRoutingManagerEngine* createRoutingManagerEngine (const QVariantMap ¶meters, QGeoServiceProvider::Error *error, QString *errorString) const;
/*!
* \brief 返回一个用参数初始化的新QPlaceManagerEngine实例,该实例实现了 位置搜索 功能。
* \param parameters
* \param error
* \param errorString
* \return
*/
QPlaceManagerEngine* createPlaceManagerEngine (const QVariantMap ¶meters, QGeoServiceProvider::Error *error, QString *errorString) const;
还有两个重要的步骤:
// 地理服务接口
Q_INTERFACES(QGeoServiceProviderFactory)
// 配置插件元数据
Q_PLUGIN_METADATA(IID "org.qt-project.qt.geoservice.serviceproviderfactory/5.0" FILE "qgc_maps_plugin.json")
其中qgc_maps_plugin.json:
{
"Keys": ["qgc-maps"],
"Provider": "QGroundControl",
"Version": 101,
"Experimental": false,
"Features": [
"OnlineMappingFeature",
"OnlineGeocodingFeature",
"ReverseGeocodingFeature"
]
}
"Provider": "QGroundControl"
字段提供了插件名称;这个名称可以使得QML地图 Map 使用此自定义插件
在FlightMap.qml 中使用:
Map{
id: _map
//--QGCLocationPlugin地图插件名称
//--qgc_maps_plugin.json 文件所描述的字段 "Provider": "QGroundControl"
plugin: Plugin { name: "QGroundControl" }
}