如何添加高德地图和瓦片地图在线资源
所有的热爱都要不遗余力,真正喜欢它便给它更高的优先级,和更多的时间吧!
关于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() 方法。就是瓦片资源链接,后文再详细介绍。这是最关键的一步,添加不同的地图关键就是添加不同的瓦片资源。
// 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地面站