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

Qt編寫地圖實(shí)現(xiàn)海量點(diǎn)位標(biāo)注

 更新時(shí)間:2022年02月10日 16:27:09   作者:feiyangqingyun  
海量點(diǎn)位標(biāo)注的出現(xiàn),是為了解決普通設(shè)備點(diǎn)超過幾百個(gè)性能極速降低的問題。本文將介紹如何通過Qt實(shí)現(xiàn)海量點(diǎn)位標(biāo)注功能,感興趣的可以了解一下

一、前言

海量點(diǎn)位標(biāo)注的出現(xiàn),是為了解決普通設(shè)備點(diǎn)超過幾百個(gè)性能極速降低的問題,普通的marker標(biāo)注由于采用的是對(duì)象的形式存在于地圖中,數(shù)量越多,占用內(nèi)存特別大,超過1000個(gè)點(diǎn)性能極其糟糕,哪怕是用點(diǎn)聚合,拖動(dòng)地圖的時(shí)候更是一卡卡,簡(jiǎn)稱卡成屎,加載的時(shí)候也是慢成一坨屎,所以迫切需要一個(gè)其他的形式來支持成千上萬的海量點(diǎn),最好的方式就是繪制圖形,精簡(jiǎn)掉很多屬性,比如自定義圖標(biāo)、旋轉(zhuǎn)角度、單擊動(dòng)畫跳動(dòng)等一堆特性,這些其實(shí)大部分時(shí)候是不需要的,在海量點(diǎn)的場(chǎng)景下,完全可以犧牲這些特性,然后采用最簡(jiǎn)單的繪制圖形的形式來繪制海量點(diǎn),提供最基礎(chǔ)的一個(gè)功能就是識(shí)別單擊了哪個(gè)點(diǎn)就行。

海量點(diǎn)位標(biāo)注核心就是采用地圖內(nèi)置的js對(duì)象類PointCollection,傳入點(diǎn)位的經(jīng)緯度坐標(biāo)集合,同時(shí)還可以統(tǒng)一設(shè)置點(diǎn)的顏色、點(diǎn)的大小、點(diǎn)的形狀,通過addEventListener監(jiān)聽單擊事件判斷單擊了哪個(gè)點(diǎn),最后通過添加覆蓋物的形式將一個(gè)海量點(diǎn)覆蓋物添加到地圖中。

尺寸參數(shù):

  • 1 = BMAP_POINT_SIZE_TINY 2px*2px
  • 2 = BMAP_POINT_SIZE_SMALLER 4px*4px
  • 3 = BMAP_POINT_SIZE_SMALL 8px*8px
  • 4 = BMAP_POINT_SIZE_NORMAL 10px*10px 默認(rèn)值
  • 5 = BMAP_POINT_SIZE_BIG 16px*16px
  • 6 = BMAP_POINT_SIZE_BIGGER 20px*20px
  • 7 = BMAP_POINT_SIZE_HUGE 30px*30px

形狀參數(shù):

  • 1 = BMAP_POINT_SHAPE_CIRCLE 圓形 默認(rèn)值
  • 2 = BMAP_POINT_SHAPE_STAR 星形
  • 3 = BMAP_POINT_SHAPE_SQUARE 方形
  • 4 = BMAP_POINT_SHAPE_RHOMBUS 菱形
  • 5 = BMAP_POINT_SHAPE_WATERDROP水滴

二、功能特點(diǎn)

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

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

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

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

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

提供編輯邊界功能,可以直接在地圖上編輯好不規(guī)則區(qū)域的點(diǎn)集合,然后獲取邊界點(diǎn)集合數(shù)據(jù),這個(gè)可以用來自己繪制區(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 frmMapMarkers::addMarker()
{
    //先清空原有的所有覆蓋物包括標(biāo)注點(diǎn)
    runJs("deleteOverlay('')");

    //取出定位點(diǎn)經(jīng)緯度大值
    QString point = ui->txtPointLeftBottom->text();
    QStringList list = point.split(",");
    double lng = list.first().toDouble();
    double lat = list.last().toDouble();

    //經(jīng)緯度小數(shù)點(diǎn)值最大值
    float dotLng = 0.015;
    float dotLat = 0.011;

    //限定最大數(shù)量
    int index = ui->cboxType->currentIndex();
    int count = ui->cboxCount->currentText().toInt();
    int maxCount = 300;
    if (index == 1) {
        maxCount = 1000;
    } else if (index == 2) {
        maxCount = 50000;
    }

    if (count > maxCount) {
        QString info = QString("由于官方該方法性能有限, 建議數(shù)量不要超過 %1 !").arg(maxCount);
        QUIHelper::showMessageBoxError(info);
        return;
    }

    //不同類型不同處理,隨機(jī)模擬經(jīng)緯度,可以自行調(diào)整范圍值
    if (index == 0) {
        //添加標(biāo)注點(diǎn)
        for (int i = 0; i < count; ++i) {
            QStringList points = QUIHelper::getRandPoint(1, lng, lat, dotLng, dotLat);
            QString js = QString("addMarker('', '', '', '', 30, '%1')").arg(points.first());
            runJs(js);
        }
    } else if (index == 1) {
        //添加點(diǎn)聚合
        QStringList points = QUIHelper::getRandPoint(count, lng, lat, dotLng, dotLat);
        QString js = QString("addMarkerClusterer('%1')").arg(points.join("|"));
        runJs(js);
    } else if (index == 2) {
        //添加海量點(diǎn)
        QStringList points = QUIHelper::getRandPoint(count, lng, lat, dotLng, dotLat);
        QString js = QString("addPointCollection('%1', '#A279C5')").arg(points.join("|"));
        runJs(js);
    }
}

void frmMapMarkers::on_btnDo_clicked()
{
    //自動(dòng)獲取當(dāng)前區(qū)域邊界
    runJs("getBounds()");
}

以上就是Qt編寫地圖實(shí)現(xiàn)海量點(diǎn)位標(biāo)注的詳細(xì)內(nèi)容,更多關(guān)于Qt地圖 海量點(diǎn)位標(biāo)注的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C語言之預(yù)處理命令的深入講解

    C語言之預(yù)處理命令的深入講解

    這篇文章主要給大家介紹了關(guān)于C語言之預(yù)處理命令的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • C語言實(shí)現(xiàn)餐飲管理系統(tǒng)

    C語言實(shí)現(xiàn)餐飲管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)餐飲管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 關(guān)于C語言中弱符號(hào)與弱引用的實(shí)際應(yīng)用問題

    關(guān)于C語言中弱符號(hào)與弱引用的實(shí)際應(yīng)用問題

    在編碼過程中,我們經(jīng)常遇到符號(hào)重定義的錯(cuò)誤問題,本文通過實(shí)例代碼展示給大家介紹了C語言弱符號(hào)與弱引用的實(shí)際應(yīng)用問題,一起看看吧
    2021-09-09
  • C/C++實(shí)現(xiàn)發(fā)送與接收HTTP/S請(qǐng)求的示例代碼

    C/C++實(shí)現(xiàn)發(fā)送與接收HTTP/S請(qǐng)求的示例代碼

    HTTP(Hypertext Transfer Protocol)是一種用于傳輸超文本的協(xié)議,它是一種無狀態(tài)的、應(yīng)用層的協(xié)議,用于在計(jì)算機(jī)之間傳輸超文本文檔,通常在 Web 瀏覽器和 Web 服務(wù)器之間進(jìn)行數(shù)據(jù)通信,本文給大家介紹了C/C++發(fā)送與接收HTTP/S請(qǐng)求,需要的朋友可以參考下
    2023-11-11
  • 使用C語言的fork()函數(shù)在Linux中創(chuàng)建進(jìn)程的實(shí)例講解

    使用C語言的fork()函數(shù)在Linux中創(chuàng)建進(jìn)程的實(shí)例講解

    這篇文章主要介紹了使用C語言的fork()函數(shù)在Linux中創(chuàng)建進(jìn)程的實(shí)例講解,fork在父進(jìn)程下創(chuàng)建出的子進(jìn)程可以與父進(jìn)程一起來多進(jìn)程運(yùn)行同一個(gè)程序,需要的朋友可以參考下
    2016-06-06
  • C++深入分析數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形態(tài)

    C++深入分析數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形態(tài)

    使用編程語言進(jìn)行編程時(shí),需要用到各種變量來存儲(chǔ)各種信息。變量保留的是它所存儲(chǔ)的值的內(nèi)存位置。這意味著,當(dāng)您創(chuàng)建一個(gè)變量時(shí),就會(huì)在內(nèi)存中保留一些空間。您可能需要存儲(chǔ)各種數(shù)據(jù)類型的信息,操作系統(tǒng)會(huì)根據(jù)變量的數(shù)據(jù)類型,來分配內(nèi)存和決定在保留內(nèi)存中存儲(chǔ)什么
    2023-01-01
  • 使用c++11 constexpr時(shí)遇到的坑詳解

    使用c++11 constexpr時(shí)遇到的坑詳解

    c++11 constexpr將變量聲明為constexpr類型以便由編譯器來驗(yàn)證變量是否是一個(gè)常量表達(dá)式,這篇文章主要給大家介紹了關(guān)于使用c++11 constexpr時(shí)遇到的坑,需要的朋友可以參考下
    2021-05-05
  • 關(guān)于define與C 的內(nèi)存

    關(guān)于define與C 的內(nèi)存

    本文主要介紹了C語言中#define到底存在程序的哪個(gè)區(qū),以及工作流程和效率與普通函數(shù)的區(qū)別,希望能幫助需要的小伙伴
    2016-07-07
  • C/C++中typedef的用法大全

    C/C++中typedef的用法大全

    typedef用法一共七種,分別是:為基本數(shù)據(jù)類型起別名、為結(jié)構(gòu)體起別名、為指針類型起別名、為數(shù)組類型起別名、為枚舉類型起別名、為模版函數(shù)起別名。本文就來分別講講這7個(gè)用法的具體實(shí)現(xiàn)吧
    2023-04-04
  • C++實(shí)現(xiàn)四叉樹效果(附源碼下載)

    C++實(shí)現(xiàn)四叉樹效果(附源碼下載)

    這篇文章主要介紹了C++實(shí)現(xiàn)四叉樹效果(附源碼下載),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03

最新評(píng)論