欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

一、前言

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

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

二、功能特點(diǎn)

定時(shí)器排隊(duì)下載省市輪廓圖點(diǎn)坐標(biāo)集合存儲(chǔ)到JS文件。

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

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

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

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

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

三、體驗(yàn)地址

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

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

國(guó)際站點(diǎn):https://github.com/feiyangqingyun

四、效果圖

五、相關(guān)代碼

void frmMapBoundary::getBoundary()
{
    //判斷當(dāng)前索引對(duì)應(yīng)的省會(huì)的復(fù)選框有沒(méi)有勾選,沒(méi)有勾選則找到下一個(gè)勾選的
    int count = names.count();
    while (indexMain < count - 1 && !cks.at(indexMain)->isChecked()) {
        indexMain++;
        indexSub = 0;
    }

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

    //下載到省會(huì)的最后一個(gè)縣,索引自動(dòng)跳到下一個(gè)省會(huì)
    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()
{
    //開(kāi)啟編輯狀態(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)
{
    //傳過(guò)來(lái)的是行政區(qū)劃的邊界點(diǎn)坐標(biāo)集合,存儲(chǔ)到j(luò)s文件
    //可能會(huì)有多個(gè)數(shù)據(jù),比如臺(tái)灣的金門(mén)島,都是獨(dú)立的區(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ě)地圖實(shí)現(xiàn)獲取區(qū)域邊界的詳細(xì)內(nèi)容,更多關(guān)于QT獲取區(qū)域邊界的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論