QT+高德地图Web服务API开发—搜索输入提示Demo(二)QT-UI布置、构建请求URL、槽函数与QT网络访问

QT-UI布置

前期简单的布置下就好了,以后可能进行调整、

下面对下图进行简要说明:lineEdit用于输入信息、ListWidget为显示最终提示信息、TextBrowser用于打印获取的XML文件后期可以删除

构建请求URL 

 根据谷歌给出了服务示例https://restapi.amap.com/v3/assistant/inputtips?    为标准请求头部city=XXX&keywords=XXX&output=xml&key=XXX 为请求参数,由于我们key值固定、output先规定为XML,city输入话较为困难、所以变化的参数只有keywords,从ui.lineEdit中获取。于是创建两个函数如下用于构建请求URL。

QString searchInputTips::spliceUrl()
{
	QString city = "city=020&"
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
您可以使用Qt网络模块来调用高德地图API。首先,您需要获取到高德地图API开发者密钥,然后使用Qt网络请求类QNetworkAccessManager来发送HTTP请求,并解析返回的JSON数据。 以下是一个简单的示例代码,用于调用高德地图的逆地理编码API,将经纬度坐标转换为地址信息: ```cpp #include <QCoreApplication> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> #include <QJsonDocument> #include <QJsonObject> #include <QJsonValue> #include <QJsonArray> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); // 创建网络请求管理器 QNetworkAccessManager manager; // 构建API请求URL QString apiKey = "YOUR_API_KEY"; QString apiUrl = QString("https://restapi.amap.com/v3/geocode/regeo?key=%1&location=116.481488,39.990464&output=json").arg(apiKey); // 发送GET请求 QNetworkReply* reply = manager.get(QNetworkRequest(QUrl(apiUrl))); // 连接请求完成信号 QObject::connect(reply, &QNetworkReply::finished, [&]() { if (reply->error() == QNetworkReply::NoError) { // 读取并解析返回的JSON数据 QByteArray response = reply->readAll(); QJsonDocument jsonResponse = QJsonDocument::fromJson(response); QJsonObject jsonObject = jsonResponse.object(); QJsonValue addressValue = jsonObject.value("regeocode").toObject().value("formatted_address"); // 输出地址信息 qDebug() << "地址:" << addressValue.toString(); } else { // 请求错误处理 qDebug() << "请求出错:" << reply->errorString(); } // 释放网络响应对象 reply->deleteLater(); // 退出应用程序 QCoreApplication::quit(); }); return a.exec(); } ``` 请注意替换代码的`YOUR_API_KEY`为您自己的高德地图API开发者密钥。这个示例代码会发送一个GET请求高德地图的逆地理编码API,并将返回的地址信息打印出来。 这只是一个简单的示例,您可以根据自己的需求进行进一步扩展和优化。希望能对您有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值