2018-10-29 解決高德地圖海量點(diǎn)卡頓的問題

由于公司是做醫(yī)療方面護(hù)心儀設(shè)備這方面的右犹,有個(gè)需求是統(tǒng)計(jì)中國各個(gè)地區(qū)佩戴護(hù)心儀的人募壕,之前頁面效果如圖:

微信圖片_20181029144123.png

之前的效果圖 用戶有7000多個(gè)

image

顏色分別代表健康狀態(tài) 跟人頭顏色相對(duì)應(yīng)

后來用戶漲到7000多的時(shí)候绽昼,頁面打開就特別的卡了芭商,縮放更別說了派草,老大讓我優(yōu)化,得保證到10幾萬用戶時(shí)不卡頓蓉坎,能正嘲木欤縮放。那段時(shí)間真的是愁死蛉艾,根本不知道怎么下手钳踊,研究了一下代碼:之前的人像圖片都是一個(gè)一個(gè)的div定位出來的,不卡才怪..... 看了下加載數(shù)據(jù) :首先頁面加載粗來就得7s左右勿侯,數(shù)據(jù)加載粗來其實(shí)只要1~2s左右拓瞪,我覺得還是跟高德地圖的模板有關(guān)系吧 總不可能去改高德地圖api

image

第一個(gè)接口數(shù)據(jù)主要是經(jīng)緯度

又去找了找高德地圖關(guān)于海量點(diǎn)的東西,最后經(jīng)過研究助琐,終于給搞出來了 祭埂,賊不卡,廢話不多說兵钮,直接上代碼吧!

setMap中的參數(shù)data的是請求的第一個(gè)接口的數(shù)據(jù):數(shù)據(jù)為:

image
image

數(shù)據(jù)長這樣子

html:

<div id="container"></div>

js:

setMap:function(zoom,center,data){
       var _this =this;
       var map =new AMap.Map('container', {
           zoom:5,
           center: center,
           zoomEnable:true,          //是否可滾輪縮放
           dragEnable:true,          //是否可拖拽
           resizeEnable:true,      //是否監(jiān)控地圖容器尺寸變化
           keyboardEnable:false,      //鍵盤控制'↑' '→' '↓' '←'
          doubleClickZoom:false,    //地圖是否可通過雙擊鼠標(biāo)放大地圖

        });

        /*根據(jù)健康狀態(tài)展示不同的圖片*/

        var style = [
            {           //健康green01

                url:'../../imgs/mapImages/green01.png',

                anchor:new AMap.Pixel(6, 6),

                size:new AMap.Size(8, 8)

              }, {               //亞健康orange01

                url:'../../imgs/mapImages/orange01.png',

                anchor:new AMap.Pixel(4, 4),

                size:new AMap.Size(8, 8)

            }, {         //疾病red01

                url:'../../imgs/mapImages/red01.png',

                anchor:new AMap.Pixel(3, 3),

                size:new AMap.Size(8, 8)

              }, {     //正在救助nowHelper

                url:'../../imgs/mapImages/nowHelpYellow.png',

                anchor:new AMap.Pixel(3, 3),

                size:new AMap.Size(8, 8)

          }, {     //未知狀態(tài)blue01

                url:'../../imgs/mapImages/blue01.png',

                anchor:new AMap.Pixel(3, 3),

                size:new AMap.Size(8, 8)
        }
];

        var locationData = [];  //存放經(jīng)緯度的數(shù)組

        var status ='';  //下表對(duì)應(yīng)的樣式

        for (var i =0; i < data.length; i++) {

            var str2 = data[i].location;

            str2 = str2.split(',');  //把經(jīng)緯度轉(zhuǎn)讓數(shù)組

            /*判斷健康狀態(tài)*/

            if(data[i].healthLevel ==1){//健康

                status =0;  //根據(jù)下標(biāo)來相對(duì)應(yīng)樣式 例如:健康對(duì)應(yīng)style數(shù)組中的第0個(gè)樣式

            }else if (data[i].healthLevel ==2) {//亞健康

                status =1;

            }else if (data[i].healthLevel ==3) {//疾病

                status =2;

            }else if(data[i].healthLevel ==4){//正在救助nowHelper

                status =3;

            }else{//未知狀態(tài)

                status =4;

            }

/*{lnglat: Array(2),  style: 2}  所需要的數(shù)據(jù)格式 */

            locationData.push({
                  lnglat: str2,
                 style: status//對(duì)應(yīng)的status相對(duì)應(yīng)的樣式style
             })
}


        /* 大量點(diǎn)所對(duì)應(yīng)的方法*/
var mass =new AMap.MassMarks(locationData, {

            opacity:0.8,

            zIndex:111,

            cursor:'pointer',

            style: style

});

        var marker =new AMap.Marker({content:' ', map: map});

        mass.on('mouseover', function (e) {

            marker.setPosition(e.data.lnglat);    //用戶相對(duì)應(yīng)的經(jīng)緯度

            marker.setLabel({content: e.data.name})//用戶相對(duì)應(yīng)的名字

        });

        mass.setMap(map);

    }

補(bǔ)充:localtionData的格式 數(shù)據(jù)必須是這種
微信圖片_20181029151201.png

最后在請求接口數(shù)據(jù)方法中調(diào)用setMap方法即可!

希望對(duì)你們有幫助蛆橡,歡迎前來討論。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掘譬,一起剝皮案震驚了整個(gè)濱河市泰演,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌葱轩,老刑警劉巖睦焕,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異靴拱,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)袜炕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來妇蛀,“玉大人笤成,你說我怎么就攤上這事】挥荆” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵培遵,是天一觀的道長。 經(jīng)常有香客問我籽腕,道長,這世上最難降的妖魔是什么皇耗? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮郎楼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呜袁。我一直安慰自己,他們只是感情好阶界,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布聋庵。 她就那樣靜靜地躺著,像睡著了一般祭玉。 火紅的嫁衣襯著肌膚如雪托启。 梳的紋絲不亂的頭發(fā)上攘宙,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天蹭劈,我揣著相機(jī)與錄音,去河邊找鬼铺韧。 笑死,一個(gè)胖子當(dāng)著我的面吹牛哈打,可吹牛的內(nèi)容都是我干的塔逃。 我是一名探鬼主播湾盗,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼立轧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了氛改?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤疆导,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后澈段,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡均蜜,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年囤耳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片充择。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡匪蟀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出材彪,到底是詐尸還是另有隱情,我是刑警寧澤段化,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站雄嚣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏缓升。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一港谊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧封锉,春花似錦、人聲如沸成福。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至像啼,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間潭苞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工僧诚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蝗碎。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像慈省,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子边败,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容