QGC(QGroundControl)地面站手把手教你改——高德地图的添加和瓦片地图在线资源

如何添加高德地图和瓦片地图在线资源


所有的热爱都要不遗余力,真正喜欢它便给它更高的优先级,和更多的时间吧!

关于QGC地面站其它文章请点击这里:     QGC地面站


1. 演示效果

    QGC地面站上地图源不是用不了就是比较旧,谷歌地图呢最好用,但是麻烦,你懂的。这里教你如何添加高德地图,其它地图类似,添加后效果如下:

在这里插入图片描述
其实有时候也加载不出来,最好还是提前下载好离线的。

2. 代码添加

     以下代码,在v4.0.11中添加,源码可点击这里:《win10下新版QGC地面站环境搭建全面攻略(v4.0.x QGroundControl地面站搭建)》

● 修改1:

     在 GenericMapProvider.h 最后加入 GaodeSatMapProvider 高德地图类定义。

//D:\gcs\qgc-src\v4.0.11\qgroundcontrol\src\QtLocationPlugin\GenericMapProvider.h:80
class GaodeSatMapProvider : public MapProvider {
    
    
    Q_OBJECT
  public:
    GaodeSatMapProvider(QObject* parent = nullptr)
        : MapProvider(QStringLiteral("webapi.amap.com"), QStringLiteral("jpg"),
                      AVERAGE_TILE_SIZE, QGeoMapType::SatelliteMapDay, parent) {
    
    }
	//"webapi.amap.com" 和 "jpg" 似乎不重要,懂地朋友还请赐教
	
    QString _getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) override;

  private:
    const QString _versionBingMaps = QStringLiteral("563");
};

● 修改2:

     在 GenericMapProvider.cpp 最后加入 _getURL() 方法。就是瓦片资源链接,后文再详细介绍。这是最关键的一步,添加不同的地图关键就是添加不同的瓦片资源。

扫描二维码关注公众号,回复: 12816895 查看本文章
// src\QtLocationPlugin\GenericMapProvider.cpp:79
QString GaodeSatMapProvider::_getURL(const int x, const int y, const int zoom, QNetworkAccessManager* networkManager) {
    
    
    Q_UNUSED(networkManager)

      return QStringLiteral("http://webst01.is.autonavi.com/appmaptile?style=6&x=%1&y=%2&z=%3").arg(x).arg(y).arg(zoom);   //高德影像 OK
}

● 修改3:

     实例化你创建的地图类, 可在函数的最后加入。加入后,就已添加到QGC的地图源选择列表中了。

// src\QtLocationPlugin\QGCMapUrlEngine.cpp:36
UrlFactory::UrlFactory() : _timeout(5 * 1000) {
    
    
...
    _providersTable["高德 卫星地图"] = new GaodeSatMapProvider(this);
}

3. 瓦片地图在线资源

如要添加其它地图源,修改1修改3中改类名后照抄就行,关键是修改2中需换不同的瓦片地图在线资源,以下亲测有效 。

更新年月:2020年03

3.1 高德地图

参考1:2017版高德地图瓦片分析

//上文的
return QStringLiteral("http://webst01.is.autonavi.com/appmaptile?style=6&x=%1&y=%2&z=%3").arg(x).arg(y).arg(zoom);
//替换 **修改2** 的瓦片资源:
return QStringLiteral("http://wprd01.is.autonavi.com/appmaptile?x=%1&y=%2&z=%3&lang=zh_cn&size=1&scl=1&style=6").arg(x).arg(y).arg(zoom);   

前者是高德的新版地址,后者是老版地址。前者lang可以通过zh_cn设置中文,en设置英文,size基本无作用,scl设置标注还是底图,scl=1代表注记,scl=2代表底图(矢量或者影像),style设置影像和路网,style=6为影像图,style=7为矢量路网,style=8为影像路网。

3.2 天地图

参考2: 天地图 WMTS 服务及规则

return QStringLiteral("http://t0.tianditu.gov.cn/img_w/wmts?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=img&STYLE=default&TILEMATRIXSET=w&FORMAT=tiles&TILEMATRIX=%1&TILEROW=%2&TILECOL=%3&tk=%4").arg(zoom).arg(y).arg(x).arg(QStringLiteral("3a351e098b778e937c05a85f4bdc2e4e"));   //网页版密钥

t0.tianditu.gov.cn ----- 服务器地址 { t0 ~ t7} ,发现t0不太好使,可以多定义几个,供选择。

密钥大哥们自己申请哦,上面是我个人申请的密钥,记得申请浏览器端密钥,链接如下: https://console.tianditu.gov.cn/api/key

使用后发现总会有卡顿的现象,甚至导致QGC崩溃,使用的时候要注意,有解法可以留言交流哈~

其它地图源,后续用到再补上。


以上有任何我没写明白或错误的欢迎留言,我会一直在的~

关于QGC地面站其它文章请点击这里:     QGC地面站

猜你喜欢

转载自blog.csdn.net/qq_16504163/article/details/113985988
今日推荐