一、环境介绍
操作系统: win10 64位
QT版本: QT5.12.6
编译器: MinGW 32
二、需求
写了一个遥控小车的上位机APP,需要根据小车上传的经纬度显示小车的定位,为了简单就直接使用百度提供的静态地图接口获取png图片进行显示。
三、百度地图接口说明
地址: lbsyun.baidu.com/index.php?t…
使用接口需要先申请KEY,申请地址: lbsyun.baidu.com/apiconsole/…
四、代码
QNetworkAccessManager *manager;
/*1. 实例化 QNetworkAccessManager*/
manager = new QNetworkAccessManager(this);
/*2. 关联 finished 信号*/
connect(manager, SIGNAL(finished(QNetworkReply*)),this, SLOT(replyFinished(QNetworkReply*)));
/*
工程: CarControl
日期: 2021-04-28
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: QNetworkReply 返回值处理
*/
void Widget::replyFinished(QNetworkReply*network)
{
//无错误返回
if(network->error() == QNetworkReply::NoError)
{
//读取所有数据
QByteArray byte_array=network->readAll();
QPixmap pixmap;
//加载图片
if(pixmap.loadFromData(byte_array,"png",Qt::AutoColor))
{
QPixmap scaledPixmap = pixmap.scaled(ui->label_MapDisplay->size(), Qt::KeepAspectRatio);
ui->label_MapDisplay->setAlignment(Qt::AlignCenter);
ui->label_MapDisplay->setPixmap(pixmap);
}
}else
{
QMessageBox::warning(this, tr("错误信息提示"),tr("更新地图失败.\n""检查网络是否正常!"),
QMessageBox::Ok);
}
//删除 reply, 不能在 repyfinished 里直接 delete,要调用 deletelater;
network->deleteLater();
}
/*
工程: CarControl
日期: 2021-04-28
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 更新地图显示
*/
void Widget::on_pushButton_update_map_clicked()
{
QString url="http://api.map.baidu.com/staticimage/v2?ak=<这是你的KEY>&width=200&height=400¢er=&markers=120.086199,30.139219&zoom=15&markerS";
/*3. 提交请求*/
manager->get(QNetworkRequest(QUrl(url)));
}