Qt加载高德在线地图
2017-06-19 10:09
489 查看
Qt使用QWebView加载高德地图
首先 widget.h文件中对变量、槽函数声明
widget.cpp中应用
初始化:
设置高德地图的html页面文件:
方法一:
方法二:
实现两个槽函数:
高德地图test.html文件:
地图上的控件或者呈现的效果都在html中实现,这里只介绍调用js函数,和js中调用Qt槽函数
首先 widget.h文件中对变量、槽函数声明
private: QWebView* m_pWebView; // QWebView对象 private slots: void onPageLoadFinished(bool); // 地图加载完毕槽函数 public slots: void onMapClickCallback(); // 点击地图时槽函数,必须是public的
widget.cpp中应用
初始化:
m_pWebView = new QWebView(this); connect(m_pWebView, SIGNAL(loadFinished(bool)), this, SLOT(onPageLoadFinished(bool))); m_pWebView->settings()->setAttribute(QWebSettings::JavascriptEnabled,true); m_pWebView->settings()->setAttribute(QWebSettings::JavaEnabled,true); m_pWebView->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows, true); m_pWebView->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard,true); m_pWebView->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled,true); m_pWebView->settings()->setAttribute(QWebSettings::LocalContentCanAccessRemoteUrls, true); m_pWebView->settings()->setAttribute(QWebSettings::LocalContentCanAccessFileUrls, true); m_pWebView->settings()->setAttribute(QWebSettings::JavascriptCanCloseWindows, true); m_pWebView->settings()->setAttribute(QWebSettings::AutoLoadImages,true); m_pWebView->settings()->setAttribute(QWebSettings::PluginsEnabled, true);
设置高德地图的html页面文件:
方法一:
QFile file("D:/test.html"); file.open(QIODevice::ReadOnly); QTextStream out(&file); QString output_file = out.readAll(); m_pWebView->setHtml(output_file);
方法二:
QFileInfo file("D:/test.html"); QString url = "file:///"; url += file.absoluteFilePath(); m_pWebView->setUrl(QUrl(url));
实现两个槽函数:
void Widget::onMapClicked(QString msg) { QMessageBox::information(NULL, QObject::tr("Lng&Lat"), msg); } void Widget::onPageLoadFinished(bool arg) { qDebug() << "load finished"; m_pWebView->page()->mainFrame()->evaluateJavaScript(QString("loadfinishtip()")); // 加载完成后,执行页面js函数loadfinishtip m_pWebView->page()->mainFrame()->addToJavaScriptWindowObject("Dialog", this); // js中添加窗口对象,用于回调Qt槽函数 }
高德地图test.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 src="http://cache.amap.com/lbs/static/es5.min.js"></script--> <script src="http://webapi.amap.com/maps?v=1.3&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 map = new AMap.Map('container', { resizeEnable: true, zoom:11, center: [116.397428, 39.90923] }); function loadfinishtip() { alert("amap load finish."); } map.on('click', function(e) { var lng = e.lnglat.getLng(); var lat = e.lnglat.getLat(); Dialog.onMapClicked(lng + "," + lat); // 调用Qt槽函数 }); </script> </body> </html>
地图上的控件或者呈现的效果都在html中实现,这里只介绍调用js函数,和js中调用Qt槽函数
相关文章推荐
- ArcGIS Javascript API 加载高德在线地图扩展
- android osmdroid 加载常用离线地图格式(开源的在线地图)
- 高德地图1---地图加载、标记地点、信息窗体
- 易景地球如何加载google等在线地图数据
- OpenLayers学习--加载指定等级指定范围的高德地图数据
- Openlayers加载在线地图
- QT 在线地图的实现
- 使用openlayers 3 在线加载天地图及GeoServer发布的地图
- 使用OpenLayers加载高德离线地图简单实用
- ArcGIS加载高德、OSM和谷歌等地图
- 4.02WorldWindAndroid加载天地图在线切片地图
- QT调用Google map通过webkit在线显示地图
- ArcGIS加载高德、OSM和谷歌等地图
- fragment中加载高德地图出现滑动冲突解决。
- 高德地图开发(二)加载瓦片数据
- 《ArcGIS Runtime for Android 100.2.1学习笔记》一:配置在线SDK及加载在线地图
- 基于高德在线地图及REST API 的 QGIS插件开发
- 高德地图之实例开发(一)加载地图
- Amap/google[高德和谷歌]地图加载不出来,【问题总汇】-持续更新...
- OpenLayer加载常见在线地图案例