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

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++常見容器

    一篇文章徹底搞懂C++常見容器

    容器就是一些特定類型對(duì)象的集合,容器可以分為順序容器和關(guān)聯(lián)容器,下面這篇文章主要給大家介紹了關(guān)于C++常見容器的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • C++程序的執(zhí)行順序結(jié)構(gòu)以及關(guān)系和邏輯運(yùn)算符講解

    C++程序的執(zhí)行順序結(jié)構(gòu)以及關(guān)系和邏輯運(yùn)算符講解

    這篇文章主要介紹了C++程序的執(zhí)行順序結(jié)構(gòu)以及關(guān)系和邏輯運(yùn)算符講解,是C++入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-09-09
  • C/C++?Qt?選擇夾TabWidget組件實(shí)現(xiàn)導(dǎo)航欄切換

    C/C++?Qt?選擇夾TabWidget組件實(shí)現(xiàn)導(dǎo)航欄切換

    Tab切換在很多地方都可以使用的到,本文就使用TabWidget組件來實(shí)現(xiàn)一下,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++回溯算法中的全排列問題分析探討

    C++回溯算法中的全排列問題分析探討

    遞歸中遇到一個(gè)問題全排列的問題,我看見回溯特別神奇,特此記錄一下。對(duì)比一下深度優(yōu)先搜索與廣度優(yōu)先搜索,個(gè)人感覺這里的回溯像是一種遞歸樹中的深度優(yōu)先搜索的算法,他不斷構(gòu)造往下延伸的深度,使其達(dá)到完全編列
    2023-03-03
  • C語(yǔ)言Turbo C下實(shí)現(xiàn)俄羅斯方塊

    C語(yǔ)言Turbo C下實(shí)現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言Turbo C下寫的俄羅斯方塊,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • OpenCV 圓與矩形識(shí)別的方法

    OpenCV 圓與矩形識(shí)別的方法

    這篇文章主要介紹了OpenCV 圓與矩形識(shí)別的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • C語(yǔ)言實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式

    C語(yǔ)言實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)中綴表達(dá)式轉(zhuǎn)換為后綴表達(dá)式,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲

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

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • C語(yǔ)言計(jì)算1/1+1/2+1/3+…+1/n的問題

    C語(yǔ)言計(jì)算1/1+1/2+1/3+…+1/n的問題

    這篇文章主要介紹了C語(yǔ)言計(jì)算1/1+1/2+1/3+…+1/n的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • C語(yǔ)言中的rand()和rand_r()詳解

    C語(yǔ)言中的rand()和rand_r()詳解

    這篇文章主要為大家介紹了C語(yǔ)言中的rand()和rand_r(),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12

最新評(píng)論

湖北省| 万安县| 沙湾县| 建水县| 江门市| 大竹县| 张家口市| 甘德县| 南郑县| 宣城市| 永善县| 龙泉市| 古丈县| 成武县| 政和县| 丹棱县| 苗栗县| 新沂市| 漳平市| 云霄县| 安福县| 南丹县| 延边| 新干县| 通许县| 开鲁县| 天气| 沙河市| 连南| 盘锦市| 察哈| 天柱县| 仁化县| 上高县| 彭水| 安西县| 务川| 盐亭县| 宝山区| 嘉义市| 济南市|