## 一、前言
本人寫Qt程序這麼多年,比較喜歡支持多個Qt版本,尤其是鍾情於支持任意Qt版本+任意系統+任意編譯器,這句話說起來簡單其實實現起來就不容易了,首先你得有個很多版本的測試環境,起碼十幾個Qt環境要的吧,四五種操作系統要的吧,還要安裝各種VS版本免不了的,畢竟win上除了默認的mingw編譯器還有很多人用的是msvc編譯器,這麼一大堆環境折騰下來,沒有個1T硬盤是不夠的,而且官網發佈Qt版本的速度相當快,最慢半年肯定來一個版本,又得測試了,每次發佈一個大的版本,除了常用的windows以外,linux要測試吧,而且現在還多出來一些國產linux系統比如deepin new start UOS之類的,也要試試吧,哎呀好累。
下面是部分代碼:
<code>void
WebHelper::initWebSetting() {static
bool
isInit =false
;if
(!isInit) { isInit =true
; QWebSettings *webSetting = QWebSettings::globalSettings(); webSetting->setAttribute(QWebSettings::JavascriptEnabled,true
); webSetting->setAttribute(QWebSettings::PluginsEnabled,true
); webSetting->setAttribute(QWebSettings::JavascriptCanOpenWindows,true
); QWebEngineSettings *webSetting = QWebEngineSettings::globalSettings(); webSetting->setAttribute(QWebEngineSettings::JavascriptEnabled,true
); webSetting->setAttribute(QWebEngineSettings::PluginsEnabled,true
); webSetting->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows,true
); } }void
frmMapBoundary::loadMap(bool
tool) { QString content; QString fileName = QString("%1/map_web.html"
).arg(AppPath); QString url ="file:///"
+ fileName; baidu->reset(); baidu->setMapZoom(10
); baidu->setShowOverlayTool(tool); baidu->setMapCenterPoint("121.414,31.1828"
); baidu->setSaveFile(true
); baidu->setSaveFile(false
); baidu->setFileName(fileName); content = baidu->newMap();if
(baidu->getSaveFile()) { webView->load(QUrl(url)); webView->dynamicCall("Navigate(const QString&)"
, url); }else
{ QUrl baseUrl(QString("%1/"
).arg(AppPath)); webView->setHtml(content, baseUrl); } }class
WebJsData
:public
QObject { Q_OBJECTpublic
:static
WebJsData *Instance
()
;explicit
WebJsData
(QObject *parent =
0
);public
slots:void
receiveData
(
const
QString &type,const
QVariant &data); signals:void
receiveDataFromJs
(
const
QString &type,const
QVariant &data); }; WebJsData *WebJsData::Instance() {static
WebJsData self;return
&self; } WebJsData::WebJsData(QObject *parent) { }void
WebJsData::receiveData(const
QString &type,const
QVariant &data) {emit
receiveDataFromJs
(type, data)
; }/<code>
## 二、功能特點
1. 同時支持在線地圖和離線地圖兩種模式。
2. 同時支持webkit內核、webengine內核、IE內核。
3. 支持設置多個標註點,信息包括名稱、地址、經緯度。
4. 可設置地圖是否可單擊、拖動、鼠標滾輪縮放。
5. 可設置協議版本、秘鑰、主題樣式、中心座標、中心城市、地理編碼位置等。
6. 可設置地圖縮放比例和級別,縮略圖、比例尺、路況信息等控件的可見。
7. 支持地圖交互,比如鼠標按下獲取對應位置的經緯度。
8. 支持查詢路線,可設置起點位置、終點位置、路線模式、路線方式、路線方案(最少時間、最少換乘、最少步行、不乘地鐵、最短距離、避開高速)。
9. 可顯示點線面工具,可直接在地圖上劃線、點、矩形、圓形等。
10. 可設置行政區劃,指定某個城市區域繪製圖層,在線地圖自動輸出行政區劃邊界點集合到js文件給離線地圖使用。
11. 可靜態或者動態添加多個覆蓋物。支持點、折線、多邊形、矩形、圓形、弧線、點聚合等。
12. 函數接口友好和統一,使用簡單方便,就一個類。
13. 支持js動態交互添加點、刪除點、清空點、重置點,不需要刷新頁面。
14. 支持任意Qt版本、任意系統、任意編譯器。
## 三、體驗地址
國內站點:[
https://gitee.com/feiyangqingyun](
https://gitee.com/feiyangqingyun)
國際站點:[
https://github.com/feiyangqingyun](
https://github.com/feiyangqingyun)
## 四、效果圖
關鍵字: setAttribute 地圖 版本