1. 程式人生 > 其它 >Qt編寫地圖綜合應用30-世界地圖

Qt編寫地圖綜合應用30-世界地圖

一、前言

世界地圖也屬於區域地圖的一種,最開始做專案的時候只有國內的地圖需求,後面有個客戶他們的產品是面向國際市場,所以在大屏展示的時候,必須展示一張世界地圖,所有箭頭動態流向中國,當然這些都要離線使用的,不能說是去載入谷歌地圖啥的,所以首選還是採用echart,至於這個世界地圖的輪廓js檔案,網上可以下載到,按照之前載入中國地圖的方式載入就行,至於其中哪些主要國家的經緯度座標,網上也都是可以查詢到。

二、功能特點

  1. 同時支援閃爍點圖、遷徙圖、區域地圖、世界地圖、儀表盤等。
  2. 可以設定標題、提示資訊、背景顏色、文字顏色、線條顏色、區域顏色等各種顏色。
  3. 可設定城市的名稱、值、經緯度 集合。
  4. 可設定地圖的放大倍數、是否允許滑鼠滾輪縮放。
  5. 內建世界地圖、全國地圖、省份地圖、地區地圖,可以精確到縣,所有地圖全部離線使用。
  6. 內建了各省市json資料檔案轉js檔案功能,如有資料更新自行轉換即可,支援單個檔案轉換和一鍵轉換所有檔案。
  7. 內建了從json檔案或者js檔案獲取該區域的所有名稱和經緯度資訊集合的功能,可以通過該方法獲取到資訊用來顯示。
  8. 依賴瀏覽器元件顯示地圖,提供的demo支援webkit/webengine/miniblink/ie 多種方式載入網頁。
  9. 採用miniblink瀏覽器核心打通了Qt5.6及後續版本+mingw編譯器缺少瀏覽器模組的遺憾,使得整個專案支援所有Qt版本,親測4.7到6.2等任意版本。
  10. 閃爍點遷徙圖等設定的點支援單獨設定顏色。
  11. 提供介面直接獲取點選的點相關資訊,方便程式聯動處理。
  12. 拓展性極強,可以依葫蘆畫瓢自行增加各種精美的echarts元件,做出牛逼的效果。
  13. 內建的儀表盤元件提供互動功能,demo演示中包含了對應的程式碼。
  14. 函式介面友好和統一,使用簡單方便,就一個類。
  15. 支援任意Qt版本、任意系統、任意編譯器。

三、體驗地址

  1. 體驗地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取碼:o05q 檔名:bin_map.zip
  2. 國內站點:https://gitee.com/feiyangqingyun
  3. 國際站點:https://github.com/feiyangqingyun
  4. 個人主頁:
    https://blog.csdn.net/feiyangqingyun
  5. 知乎主頁:https://www.zhihu.com/people/feiyangqingyun/

四、效果圖

五、相關程式碼

QStringList cityName, cityValue, cityPoint, cityColor, cityTip;
#if 0
cityName << "美國1" << "美國2" << "美國3" << "英國" << "德國" << "荷蘭" << "澳大利亞" << "溫州";
cityValue << "0" << "0" << "0" << "0" << "0" << "0" << "0" << "1";
cityPoint << "-115.652087,44.677279" << "-97.990682,32.358956" << "-119.037189,35.667425"
          << "-1.742162,52.468150" << "10.032107,50.633281" << "5.763934,53.181365"
          << "134.250655,-23.981496" << "120.65,28.01";
#else
cityName << "北美洲" << "南美洲" << "非洲" << "歐洲" << "大洋洲" << "印度" << "中國";
cityValue << "0" << "0" << "0" << "0" << "0" << "0" << "1";
cityPoint << "-101.670961,41.103997" << "-58.842054,-11.895087" << "22.106051,14.099049"
          << "15.777381,49.971800" << "132.637011,-25.596128" << "78.475369,22.934290"
          << "113.651000,39.526776";
#endif

for (int i = 0; i < cityName.count(); i++) {
    cityColor << "";
    cityTip << QString("銷售額佔比: %1 = %2%").arg(cityName.at(i)).arg(rand() % 100);
}

echart->setCityName(cityName);
echart->setCityValue(cityValue);
echart->setCityPoint(cityPoint);
echart->setCityColor(cityColor);
echart->setCityTip(cityTip);
echart->setMapJsName("world");
echart->setMapAreaName("world");