最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QT編寫地圖實現(xiàn)獲取區(qū)域邊界

 更新時間:2022年02月10日 16:28:23   作者:feiyangqingyun  
區(qū)域邊界是一些坐標點集合,而且不同的行政區(qū)劃得到的區(qū)域邊界點數(shù)組集合個數(shù)不同。本文將具體介紹QT在編寫地圖時如何實現(xiàn)獲取區(qū)域邊界,需要的可以參考一下

一、前言

區(qū)域邊界也是一些坐標點集合,而且不同的行政區(qū)劃得到的區(qū)域邊界點數(shù)組集合個數(shù)不同,覺得部分都是一個集合,少部分有一些飛地之類的,需要多個閉合區(qū)域,所以會得到多個數(shù)組集合,繪制的時候都要分別取出來繪制就行。

獲取邊界點一般和行政區(qū)劃搭配起來使用,比如用戶輸入一個省市的名稱,然后自動定位到該省市,然后對該輪廓獲取所有邊界點集合輸出到js文件,最后供離線使用,獲取邊界點還有一個功能就是獲取當前區(qū)域內的左下角右上角等經(jīng)緯度坐標,這個主要是供離線地圖下載使用的,百度地圖很好的提供了bdary.get(cityname, function(rs)的函數(shù)來獲取行政區(qū)劃的邊界點集合,其中rs.boundaries就是所有的邊界點集合,估計他是服務器上存儲好的每個區(qū)域的集合,查詢到了立即返回,可能早期也是人工的一點點圈起來連線好存到到數(shù)據(jù)庫的,按照此方式其實可以搞一個程序自動將全國的所有省市邊界點集合數(shù)據(jù)全部扒下來,給離線地圖使用,測試了下貌似只支持到縣城級別,不支持具體到鄉(xiāng)鎮(zhèn)。

二、功能特點

定時器排隊下載省市輪廓圖點坐標集合存儲到JS文件。

支持一個行政區(qū)域多個不規(guī)則區(qū)域下載。

自動計算行政區(qū)域的下載輪廓數(shù)量。

可精確選擇省份、市區(qū)、縣城,也可直接輸入行政區(qū)域的名稱。

可以設置下載間隔、隨時開始下載和停止下載。

提供編輯邊界功能,可以直接在地圖上編輯好不規(guī)則區(qū)域的點集合,然后獲取邊界點集合數(shù)據(jù),這個可以用來自己繪制區(qū)域拿到數(shù)據(jù),比如某個鄉(xiāng)鎮(zhèn)甚至某個小區(qū)的行政區(qū)域數(shù)據(jù),很牛逼。

三、體驗地址

體驗地址:https://pan.baidu.com/s/15ZKAlptW-rDcNq8zlzdYLg  提取碼:uyes 文件名:bin_map.zip

國內站點:https://gitee.com/feiyangqingyun

國際站點:https://github.com/feiyangqingyun

四、效果圖

五、相關代碼

void frmMapBoundary::getBoundary()
{
    //判斷當前索引對應的省會的復選框有沒有勾選,沒有勾選則找到下一個勾選的
    int count = names.count();
    while (indexMain < count - 1 && !cks.at(indexMain)->isChecked()) {
        indexMain++;
        indexSub = 0;
    }

    //到了最后一個省會的索引,停止定時器
    if (indexMain == count || !cks.at(indexMain)->isChecked()) {
        on_btnStop_clicked();
        return;
    }

    //下載到省會的最后一個縣,索引自動跳到下一個省會
    QStringList list = names.at(indexMain);
    if (indexSub == list.count()) {
        indexMain++;
        indexSub = 0;
        getBoundary();
        return;
    }

    QString name = list.at(indexSub);
    addBoundary(name);
    indexSub++;

    //更新進度條
    int value = bars.at(indexMain)->value();
    bars.at(indexMain)->setValue(value + 1);
    ui->txtTip->setText(name);
}

void frmMapBoundary::addBoundary()
{
    //開啟編輯狀態(tài)
    QString name = ui->cboxName->currentText();
    addBoundary(name, true);
}

void frmMapBoundary::addBoundary(const QString &name, bool edit)
{
    currentName = name;
    QString js = QString("addBoundary('%1', true, %2)").arg(name).arg(edit ? "true" : "false");
    runJs(js);
}

void frmMapBoundary::saveBoundary(const QString &fileName, const QVariant &data)
{
    //傳過來的是行政區(qū)劃的邊界點坐標集合,存儲到js文件
    //可能會有多個數(shù)據(jù),比如臺灣的金門島,都是獨立的區(qū)域形狀,存入數(shù)組
    QStringList boundarys;
    QStringList list = data.toString().split("|");
    foreach (QString points, list) {
        boundarys << QString("{'points': '%1'}").arg(points);
    }

    //最終js文件內容數(shù)據(jù)
    QString boundary = QString("var boundarys = [%1]").arg(boundarys.join(", "));
    QFile file(fileName);
    if (file.open(QFile::WriteOnly | QFile::Truncate)) {
        QTextStream out(&file);
#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
        out.setCodec("utf-8");
#endif
        out << boundary;
    }
}

以上就是QT編寫地圖實現(xiàn)獲取區(qū)域邊界的詳細內容,更多關于QT獲取區(qū)域邊界的資料請關注腳本之家其它相關文章!

相關文章

  • 淺談C++11的std::mem_fn源碼解析

    淺談C++11的std::mem_fn源碼解析

    本文是基于gcc-4.9.0的源代碼進行分析,std::mem_fn是C++11才加入標準的,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語言編程中的聯(lián)合體union入門學習教程

    C語言編程中的聯(lián)合體union入門學習教程

    這篇文章主要介紹了C語言編程中的聯(lián)合體union入門學習教程,也是C語言入門學習中的基礎知識,需要的朋友可以參考下
    2015-12-12
  • C++?OpenCV裁剪圖片時發(fā)生報錯的解決方式

    C++?OpenCV裁剪圖片時發(fā)生報錯的解決方式

    在圖像處理中,我們經(jīng)常根據(jù)需要截取圖像中某一區(qū)域做處理,下面這篇文章主要給大家介紹了關于C++?OpenCV裁剪圖片時發(fā)生報錯的解決方式,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • C語言函數(shù)棧幀的創(chuàng)建與銷毀原理圖解

    C語言函數(shù)棧幀的創(chuàng)建與銷毀原理圖解

    我們知道c語言中函數(shù)都是被調用的,main函數(shù)里面能調用其他函數(shù),其實main函數(shù)也是被別的函數(shù)調用的,下面通過本文給大家分享c語言函數(shù)棧幀的創(chuàng)建和銷毀過程,一起看看吧
    2022-05-05
  • Qt中常用對話框使用技巧及注意事項

    Qt中常用對話框使用技巧及注意事項

    Qt?為應用程序設計提供了一些常用的標準對話框,如打開文件對話框、選擇顏色對話框、信息提示和確認選擇對話框、標準輸入對話框等,這篇文章主要給大家介紹了關于Qt中常用對話框使用技巧及注意事項的相關資料,需要的朋友可以參考下
    2024-04-04
  • 詳解如何在VS2019和VScode中配置C++調用python接口

    詳解如何在VS2019和VScode中配置C++調用python接口

    這篇文章主要介紹了詳解如何在VS2019和VScode中配置C++調用python接口,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • C++實現(xiàn)LeetCode(99.復原二叉搜索樹)

    C++實現(xiàn)LeetCode(99.復原二叉搜索樹)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(99.復原二叉搜索樹),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • C++設計模式之抽象工廠模式

    C++設計模式之抽象工廠模式

    這篇文章主要介紹了C++設計模式之抽象工廠模式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • VC實現(xiàn)ODBC數(shù)據(jù)庫操作實例解析

    VC實現(xiàn)ODBC數(shù)據(jù)庫操作實例解析

    這篇文章主要介紹了VC實現(xiàn)ODBC數(shù)據(jù)庫操作的方法,非常有實用價值,需要的朋友可以參考下
    2014-07-07
  • C++動態(tài)內存分配(new/new[]和delete/delete[])詳解

    C++動態(tài)內存分配(new/new[]和delete/delete[])詳解

    這篇文章主要介紹了C++動態(tài)內存分配(new/new[]和delete/delete[])詳解的相關資料,需要的朋友可以參考下
    2017-05-05

最新評論

财经| 茶陵县| 绥阳县| 屏东县| 西乌珠穆沁旗| 景东| 扎兰屯市| 兴仁县| 金坛市| 醴陵市| 黎城县| 桦甸市| 大英县| 遵义市| 香港 | 上蔡县| 沧州市| 丹江口市| 德昌县| 宽甸| 兰西县| 阳信县| 襄樊市| 吉安县| 桦川县| 邯郸县| 乌什县| 易门县| 奉新县| 永清县| 浦北县| 沽源县| 开平市| 法库县| 余干县| 青河县| 颍上县| 罗定市| 本溪| 烟台市| 太白县|