QT调用百度地图显示位置

QT += core gui
QT += axcontainer
QT+=network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = QWeb
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += main.cpp
dialog.cpp
HEADERS += dialog.h
FORMS += dialog.ui
DISTFILES +=
my.html
2.
#ifndef DIALOG_H
#define DIALOG_H

#include
#include
#include
namespace Ui {
class Dialog;
}

class Dialog : public QDialog
{
Q_OBJECT

public:
explicit Dialog(QWidget *parent = 0);
~Dialog();

private slots:
void on_pushButton_clicked();
void server_New_Connect();
void socket_Read_Data();
private:
Ui::Dialog *ui;
QTcpServer *server;
QTcpSocket *socket;
};

#endif // DIALOG_H
3.
#include “dialog.h”
#include “ui_dialog.h”
#include<ole2.h>
#include
#include
#include
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);

server=new QTcpServer();
connect(server,&QTcpServer::newConnection,this,&Dialog::server_New_Connect);

ui->axWidget->setControl(QString::fromUtf8("{8856F961-340A-11D0-A96B-00C04FD705A2}"));
QString mapHtml=QDir::currentPath()+"/my.html";
ui->axWidget->dynamicCall("Navigate(const QString&)",mapHtml);

}

Dialog::~Dialog()
{
delete ui;
}

void Dialog::on_pushButton_clicked()
{
if(ui->pushButton->text()==tr(“侦听”))
{
int port=ui->port->text().toInt();
if(!server->listen(QHostAddress::Any,port))
{
qDebug()<errorString();
return;
}
ui->pushButton->setText(“取消侦听”);
qDebug()<<“Listen successfully!”;
}
else
{
socket->abort();
server->close();
ui->pushButton->setText(“侦听”);
}
}

void Dialog::server_New_Connect()
{
socket=server->nextPendingConnection();
QObject::connect(socket,&QTcpSocket::readyRead,this,&Dialog::socket_Read_Data);
qDebug()<<“A Client connect!”;
}

void Dialog::socket_Read_Data()
{
QByteArray buffer;
buffer=socket->readAll();
QString str;
if(!buffer.isEmpty())
{
str=QString::fromLocal8Bit(buffer);
}
QString i,j;
i=str.left(10);
j=str.right(9);
QString test_str;
test_str=“addpoint(”+i+","+j+")";
QAxObject *document = ui->axWidget->querySubObject(“Document”);
QAxObject *parentWindow = document->querySubObject(“parentWindow”);
parentWindow->dynamicCall(“execScript(QString,QString)”,test_str,“JavaScript”);
}
4.
#include “dialog.h”
#include

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
w.show();

return a.exec();

}
5.
获取百度地图api方式:
(http://api.map.baidu.com/lbsapi/creatmap/index.html)
在这里插入图片描述

### 如何在QT应用程序中调用百度地图API实现地图功能 要在Qt应用程序中集成百度地图的功能,可以借助`QWebEngineView`组件加载包含百度地图API的HTML页面。以下是具体方法: #### 使用 `QWebEngineView` 加载百度地图 可以通过创建一个基于 `QWebEngineView` 的窗口,并在其内部嵌入百度地图API提供的HTML代码来完成地图显示[^2]。 ```cpp #include <QApplication> #include <QWebEngineView> #include <QUrl> int main(int argc, char *argv[]) { QApplication app(argc, argv); QWebEngineView view; QString baiduMapHtml = R"( <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8"> <title>Baidu Map</title> <style type="text/css"> html,body,#container{ margin: 0; width: 100%; height: 100%; } </style> <script type="text/javascript" src="https://api.map.baidu.com/api?v=3.0&ak=您的AK"></script> </head> <body> <div id="container"></div> <script type="text/javascript"> var map = new BMap.Map("container"); var point = new BMap.Point(116.404, 39.915); map.centerAndZoom(point, 15); </script> </body> </html>)"; view.setHtml(baiduMapHtml); // 设置HTML内容 view.resize(800, 600); // 调整窗口大小 view.show(); return app.exec(); } ``` 上述代码片段展示了如何通过设置自定义HTML字符串的方式,在Qt程序中加载百度地图并初始化其位置和缩放级别[^3]。 #### 处理 API 链接错误 如果直接使用百度地图官方文档中的API链接可能导致运行失败,则需调整URL参数以适应实际需求。例如,将原链接替换为更稳定的版本号或指定其他类型的接口[^4]。 #### JavaScript 与 C++ 桥接 为了进一步增强交互能力,可利用Qt内置机制建立JavaScript与C++之间的桥梁,从而允许两者互相传递数据或触发事件。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值