Mapbox GL構(gòu)建室內(nèi)地圖展示

??最近朋友有個(gè)項(xiàng)目需要幫忙盯仪,于是抽空用mapbox gl幫他實(shí)現(xiàn)了一個(gè)室內(nèi)地圖展示的Demo幻捏。先來(lái)看看最終呈現(xiàn)效果吧:


室內(nèi)地圖展示.gif
CAD數(shù)據(jù)處理

??首先是室內(nèi)設(shè)計(jì)圖紙要從CAD轉(zhuǎn)換為shp文件辱揭。主要通過(guò)Arcmap的CAD至地理數(shù)據(jù)庫(kù)的功能先將其轉(zhuǎn)換為地理數(shù)據(jù)庫(kù)中的數(shù)據(jù)丈氓,得到結(jié)果如下圖所示:
CAD至地理數(shù)據(jù)庫(kù).jpg
結(jié)果.jpg

由于這邊對(duì)于地理位置沒(méi)有精確要求局冰,就選了個(gè)合適的位置做了處理舅踪,最終室內(nèi)圖的原始shp數(shù)據(jù)展示如下:


室內(nèi)圖shp.jpg
代碼實(shí)現(xiàn):

??這里偷了個(gè)懶稼病,直接用了同事從高德?lián)高^(guò)來(lái)的樓層列表進(jìn)行樓層的展示控制选侨。同時(shí),為了方便demo的部署然走,直接將shp轉(zhuǎn)成了json文件進(jìn)行加載援制,省去了圖層服務(wù)的發(fā)布。
??樓層控制主要通過(guò)layer的setFilter和source的setData的方法來(lái)改變的:

       function changeData(layerName, FlrCode, BKUID) {
            var data = map.getSource(layerName)._data;
            for (var i = 0; i < data.features.length; i++) {
                if (data.features[i].properties.BKUID == BKUID) {
                    if (data.features[i].properties.FlrCode == FlrCode) {
                        data.features[i].properties.Visible = 1
                    } else {
                        data.features[i].properties.Visible = 0
                    }
                }
            };
            map.getSource(layerName).setData(data);
        }
        function changeVisible(FlrCode, BKUID, FlrID, index) {
            currentFloorId = FlrID;
            changeData(floorLayer, FlrCode, BKUID)
            changeData(unitLayer, FlrCode, BKUID)
            changeData(textLayer, FlrCode, BKUID)
            // 調(diào)整 docker 的位置
            document.getElementById('floorList').scrollTop = (index) * 59;
            // 設(shè)置上下按鈕的狀態(tài)
            if (index === 0) {
                document.getElementById('floorPlus').classList.add('disabled');
            } else {
                document.getElementById('floorPlus').classList.remove('disabled');
            }
            if (index === floorList.features.length - 1) {
                document.getElementById('floorMinus').classList.add('disabled');
            } else {
                document.getElementById('floorMinus').classList.remove('disabled');
            }
        }

??最終實(shí)現(xiàn)效果就如開(kāi)頭所示芍瑞。這里還有mapbox的pitch角度>60的設(shè)置問(wèn)題晨仑,后面會(huì)單獨(dú)寫一篇記錄下。
??最近還基于mapbox gl+three做了一些三維可視化的地圖效果,后面有時(shí)間也記錄下洪己。
??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末妥凳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子答捕,更是在濱河造成了極大的恐慌逝钥,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拱镐,死亡現(xiàn)場(chǎng)離奇詭異艘款,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)沃琅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門哗咆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人益眉,你說(shuō)我怎么就攤上這事晌柬。” “怎么了郭脂?”我有些...
    開(kāi)封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵年碘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我朱庆,道長(zhǎng)盛泡,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任娱颊,我火速辦了婚禮,結(jié)果婚禮上凯砍,老公的妹妹穿的比我還像新娘箱硕。我一直安慰自己,他們只是感情好悟衩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布剧罩。 她就那樣靜靜地躺著,像睡著了一般座泳。 火紅的嫁衣襯著肌膚如雪惠昔。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天挑势,我揣著相機(jī)與錄音镇防,去河邊找鬼。 笑死潮饱,一個(gè)胖子當(dāng)著我的面吹牛来氧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼中狂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了扑毡?” 一聲冷哼從身側(cè)響起胃榕,我...
    開(kāi)封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瞄摊,沒(méi)想到半個(gè)月后勤晚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡泉褐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年赐写,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膜赃。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挺邀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出跳座,到底是詐尸還是另有隱情端铛,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布疲眷,位于F島的核電站禾蚕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏狂丝。R本人自食惡果不足惜换淆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望几颜。 院中可真熱鬧倍试,春花似錦、人聲如沸蛋哭。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谆趾。三九已至躁愿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沪蓬,已是汗流浹背彤钟。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留怜跑,地道東北人样勃。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓吠勘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親峡眶。 傳聞我的和親對(duì)象是個(gè)殘疾皇子剧防,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353