亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

一、前言

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

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

二、功能特點

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

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

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

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

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

提供編輯邊界功能,可以直接在地圖上編輯好不規(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

國內(nèi)站點:https://gitee.com/feiyangqingyun

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

四、效果圖

五、相關(guān)代碼

void frmMapBoundary::getBoundary()
{
    //判斷當(dāng)前索引對應(yīng)的省會的復(fù)選框有沒有勾選,沒有勾選則找到下一個勾選的
    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++;

    //更新進(jìn)度條
    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ū)劃的邊界點坐標(biāo)集合,存儲到j(luò)s文件
    //可能會有多個數(shù)據(jù),比如臺灣的金門島,都是獨立的區(qū)域形狀,存入數(shù)組
    QStringList boundarys;
    QStringList list = data.toString().split("|");
    foreach (QString points, list) {
        boundarys << QString("{'points': '%1'}").arg(points);
    }

    //最終js文件內(nèi)容數(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ū)域邊界的詳細(xì)內(nèi)容,更多關(guān)于QT獲取區(qū)域邊界的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言指針必備基礎(chǔ)全面覆蓋

    C語言指針必備基礎(chǔ)全面覆蓋

    數(shù)據(jù)對象是指存儲在內(nèi)存中的一個指定數(shù)據(jù)類型的數(shù)值或字符串,它們都有一個自己的地址,指針是保存這個地址的變量,本篇文章帶你掌握C語言指針的用法
    2021-10-10
  • C語言實現(xiàn)桌面貪吃蛇小游戲

    C語言實現(xiàn)桌面貪吃蛇小游戲

    這篇文章主要介紹了C語言實現(xiàn)桌面貪吃蛇小游戲,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • C++文件關(guān)鍵詞快速定位出現(xiàn)的行號實現(xiàn)高效搜索

    C++文件關(guān)鍵詞快速定位出現(xiàn)的行號實現(xiàn)高效搜索

    這篇文章主要為大家介紹了C++文件關(guān)鍵詞快速定位出現(xiàn)的行號實現(xiàn)高效搜索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • c++類構(gòu)造函數(shù)詳解

    c++類構(gòu)造函數(shù)詳解

    這篇文章主要介紹了c++類構(gòu)造函數(shù)示例,需要的朋友可以參考下
    2014-05-05
  • C++11系列學(xué)習(xí)之類型推導(dǎo)

    C++11系列學(xué)習(xí)之類型推導(dǎo)

    這篇文章主要介紹了C++11系列學(xué)習(xí)之類型推導(dǎo),文章基于C++的相關(guān)資料展開對主題的詳細(xì)內(nèi)容介紹,具有一定的參考價值需要的小伙伴可參考一下
    2022-04-04
  • 詳解C語言中二級指針與鏈表的應(yīng)用

    詳解C語言中二級指針與鏈表的應(yīng)用

    對于初學(xué)者而言,有很多地方肯定是費解的。比如函數(shù)的參數(shù)列表的多樣化,動態(tài)分配內(nèi)存空間函數(shù)malloc等,其實這些知識和指針聯(lián)系緊密,尤其是二級指針,快跟隨小編來學(xué)習(xí)一下吧
    2022-07-07
  • C++指針運算符(&和*)的實現(xiàn)

    C++指針運算符(&和*)的實現(xiàn)

    C++ 提供了兩種指針運算符,一種是取地址運算符 &,一種是間接尋址運算符 *,本文就詳細(xì)的介紹一下這兩種運算符的使用,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • C++中共用體的定義與應(yīng)用總結(jié)

    C++中共用體的定義與應(yīng)用總結(jié)

    共同體的定義類似結(jié)構(gòu)體,不過共同體的所有成員都在同一段內(nèi)存中存放,起始地址一樣,并且同一時刻只能使用其中的一個成員變量
    2013-10-10
  • C++中智能指針如何設(shè)計和使用

    C++中智能指針如何設(shè)計和使用

    智能指針(smart pointer)是存儲指向動態(tài)分配(堆)對象指針的類,用于生存期控制,能夠確保自動正確的銷毀動態(tài)分配的對象,防止內(nèi)存泄露,需要的朋友可以參考下
    2012-11-11
  • c++大數(shù)階乘的實現(xiàn)方法

    c++大數(shù)階乘的實現(xiàn)方法

    本篇文章對c++的大數(shù)階乘進(jìn)行了代碼示例的介紹。需要的朋友參考下
    2013-05-05

最新評論