QT调用百度地图

1.申请百度地图AK(有百度账号才行)

http://lbsyun.baidu.com/

2.按百度地图教程,copy那个HTML,修改ak

3.在Qt工程的Pro文件加    QT += webkit,在QtCreator里拖一个qwebview,代码里加

                        ui.webView->setUrl(QUrl("file:///D:/BaiduMap/baidumap.html"));  

                        ui.webView->show();

(注意:HTML的放置位置,不要有中文;头文件的添加#include<QtWebkit>;QT属性设置记得勾上对应的webkit,否则编译会显示2019和2001错误)



Qt是一种跨平台的开发框架,它提供了丰富的功能库,可轻松实现各种应用程序。要在Qt调用百度地图标记点信息,首先需要在百度地图开放平台上创建一个应用程序,并获得对应的应用密钥。接着,可以使用Qt中提供的网络模块进行HTTP请求,从而与百度地图API进行通信,获取标记点的信息。 在Qt中,可以使用QNetworkAccessManager类来发起HTTP请求,并使用QNetworkReply类来处理响应。需要注意的是,百度地图API通常会返回JSON格式的数据,因此需要使用Qt中提供的Json模块进行解析。同时,还可以使用Qt中的Graphics View框架来展示地图和标记点,以及与用户进行交互。 以下是一个简单的示例代码,演示如何在Qt中使用百度地图API获取标记点信息并在地图上显示: ``` #include <QtNetwork> #include <QGraphicsView> #include <QJsonDocument> #include <QJsonObject> class MapViewer : public QGraphicsView { public: MapViewer(QWidget *parent = nullptr) : QGraphicsView(parent) { // 创建网络访问管理器 m_network = new QNetworkAccessManager(this); // 设置百度地图API密钥 m_apikey = "YOUR_API_KEY"; // 发起HTTP请求获取标记点信息 requestMarkers(); } private: QNetworkAccessManager *m_network; QString m_apikey; void requestMarkers() { QUrl url("http://api.map.baidu.com/place/v2/search"); QUrlQuery query; query.addQueryItem("query", "餐厅"); // 搜索关键词 query.addQueryItem("region", "北京"); // 搜索区域 query.addQueryItem("output", "json"); // 返回格式为JSON query.addQueryItem("scope", "2"); // 返回详细信息 query.addQueryItem("ak", m_apikey); // 此处填写应用程序的API密钥 url.setQuery(query); QNetworkRequest request(url); QNetworkReply *reply = m_network->get(request); connect(reply, &QNetworkReply::finished, this, &MapViewer::handleMarkers); } void handleMarkers() { QNetworkReply *reply = qobject_cast<QNetworkReply *>(sender()); if (reply->error() != QNetworkReply::NoError) return; QByteArray data = reply->readAll(); QJsonDocument doc = QJsonDocument::fromJson(data); QJsonObject jsonObj = doc.object(); QJsonArray results = jsonObj.value("results").toArray(); for (const QJsonValue &result : results) { QJsonObject poi = result.toObject(); double lon = poi.value("location").toObject().value("lng").toDouble(); double lat = poi.value("location").toObject().value("lat").toDouble(); QGraphicsRectItem *marker = new QGraphicsRectItem(-5, -5, 10, 10); marker->setPen(Qt::NoPen); marker->setBrush(Qt::red); marker->setPos(lon * 100000, -lat * 100000); scene()->addItem(marker); } } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); MapViewer viewer; viewer.setScene(new QGraphicsScene); viewer.show(); return app.exec(); } ``` 以上代码演示了如何在Qt中发起HTTP请求,获取百度地图API返回的标记点信息,并在Graphics View中显示标记点。当然,由于百度地图API拥有丰富的功能,上述代码仅为一个示例,开发者可以根据需求进行扩展和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值