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

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

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

一、前言

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

海量點位標(biāo)注核心就是采用地圖內(nèi)置的js對象類PointCollection,傳入點位的經(jīng)緯度坐標(biāo)集合,同時還可以統(tǒng)一設(shè)置點的顏色、點的大小、點的形狀,通過addEventListener監(jiā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水滴

二、功能特點

定時器排隊下載省市輪廓圖點坐標(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 frmMapMarkers::addMarker()
{
    //先清空原有的所有覆蓋物包括標(biāo)注點
    runJs("deleteOverlay('')");

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

    //經(jīng)緯度小數(shù)點值最大值
    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)注點
        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) {
        //添加點聚合
        QStringList points = QUIHelper::getRandPoint(count, lng, lat, dotLng, dotLat);
        QString js = QString("addMarkerClusterer('%1')").arg(points.join("|"));
        runJs(js);
    } else if (index == 2) {
        //添加海量點
        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)前區(qū)域邊界
    runJs("getBounds()");
}

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

    OpenCV 圓與矩形識別的方法

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

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

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

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

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

    C語言計算1/1+1/2+1/3+…+1/n的問題

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

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

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

最新評論

桃源县| 昌吉市| 渝中区| 大名县| 大理市| 长阳| 吉首市| 安泽县| 洪泽县| 汉寿县| 静乐县| 衡南县| 江津市| 眉山市| 读书| 禹城市| 襄垣县| 临安市| 普兰县| 宾阳县| 错那县| 南昌县| 佳木斯市| 龙泉市| 清涧县| 荆州市| 深泽县| 廊坊市| 固原市| 宜兰市| 达日县| 澜沧| 北碚区| 泉州市| 阿拉善盟| 滦南县| 临颍县| 永昌县| 黑水县| 玉门市| 祁阳县|