QT加载高德地图

我们都知道在网页在可以打开高德地图,是用浏览器打开的,而高德地图也提供API供开发者使用

,概述-Web服务 API | 高德地图API高德开放平台官网https://lbs.amap.com/api/webservice/summary/这个时候如果开发地图位置相关的程序就可以使用高德的API来显示相应的位置,本篇介绍Qt调用高德API显示地图,QT中使用QWebEngineView显示地图,在工程中要添加 webenginewidgets模块下面是具体代码示例:

QT       += core gui webenginewidgets
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QWebEngineView>
#include <QWebEngineSettings>
#include <QWebEnginePage>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    void initView();
    void initData();

private slots:
    void slotPageLoadFinished(bool isFinished);    // 地图加载完毕槽函数

public slots:
    void slotMapClickCallback();    // 点击地图时槽函数,

private:
    Ui::MainWindow *ui;
    QWebEngineView *m_pWebView;
};
#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    initView();
    initData();
}

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


void MainWindow::initView()
{
    m_pWebView = new QWebEngineView(this);
    m_pWebView->setGeometry(this->rect());

    connect(m_pWebView, SIGNAL(loadFinished(bool)), this, SLOT(slotPageLoadFinished(bool)));

    m_pWebView->settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, true);
    m_pWebView->settings()->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, true);
    m_pWebView->settings()->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard,true);
    m_pWebView->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessRemoteUrls, true);
    m_pWebView->settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, true);
    m_pWebView->settings()->setAttribute(QWebEngineSettings::AutoLoadImages,true);
    m_pWebView->settings()->setAttribute(QWebEngineSettings::PluginsEnabled, true);

}

void MainWindow::initData()
{
    m_pWebView->load(QUrl("qrc:/gaode.html"));
}

void MainWindow::slotPageLoadFinished(bool isFinished)
{
    //108.761462, 34.452136
    qDebug() << "slotPageLoadFinished====================================" << isFinished;
    m_pWebView->page()->runJavaScript(QString("loadfinishtip(108.761462, 34.452136)"));
}

void MainWindow::slotMapClickCallback()
{

}

加载的页面是一个html,内容如下

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no, width=device-width">
    <title>高德地图</title>
    <link rel="stylesheet" href="http://cache.amap.com/lbs/static/main1119.css"/>
    <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=你申请的key"></script>
    <script type="text/javascript" src="http://cache.amap.com/lbs/static/addToolbar.js"></script>
</head>
<body>
<div id="container"></div>

<script>
    var mymap = new AMap.Map('container', {
        resizeEnable: true,//是否监控地图容器尺寸变化
        zoom:11, //初始化地图层级(放大倍数)
        //center: [116.397428, 39.90923] //初始化地图中心点

    });

    //C++动态传坐标参数
    function loadfinishtip(lng, lat) {
        //alert("amap load finish." + lng + lat);
        //mymap.setCenter([108.761462, 34.452136]);
        mymap.setCenter([lng, lat]);
        var marker = new AMap.Marker({position:[lng, lat], map:mymap});//添加标注
    }


</script>
</body>
</html>

运行结果如下:

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值