基于Echarts的超高自定義地圖(設(shè)計(jì)稿轉(zhuǎn)地圖)

需求描述

我想自己做一個室內(nèi)地圖但是并沒有地圖數(shù)據(jù)(Geojson),因?yàn)楦鞔笃脚_只提供了像全國地圖凡简、世界地圖這種通用地圖數(shù)據(jù) 冀自。這篇文章告訴你怎么將一個矢量圖紙轉(zhuǎn)成地圖數(shù)據(jù)汽纠,并結(jié)合echarts的線圖、點(diǎn)圖炼七、關(guān)系圖做出豐富的地圖圖表缆巧!

最終效果

模擬商場人流效果.gif

這里只為介紹如何實(shí)現(xiàn)效果,echarts豌拙、highcharts陕悬、G2官網(wǎng)都有提供豐富的圖表

底圖準(zhǔn)備

  • 通常情況下設(shè)計(jì)師會將繪制好的地圖給開發(fā)員,這里要求設(shè)計(jì)稿必須為矢量圖按傅,有一點(diǎn)需要注意的是為了方便后期開發(fā)捉超,作圖的時(shí)候需要將每個圖形和你需要表示的東西關(guān)聯(lián)起來,譬如在我的業(yè)務(wù)中唯绍,這里的每一個圖形代表一個商鋪拼岳,所以在下圖左側(cè)可以看到我將圖形命名為商鋪名稱+位置。


    設(shè)計(jì)稿.png
  • 接著我將整個圖導(dǎo)出來况芒,格式選擇SVG惜纸;來看一下導(dǎo)出的文件;可以看到我給圖形的命名就是這個圖形的id绝骚,這樣我們就可以在生成geojson的時(shí)候用圖形的id來標(biāo)識圖形堪簿。


    導(dǎo)出svg圖.png

圖形轉(zhuǎn)數(shù)據(jù)(SVG轉(zhuǎn)Geojson)

網(wǎng)絡(luò)上有一些svgtogeojson的庫,經(jīng)過我的挑選之后皮壁,找到一個非常好用的但仍然不符合我需求的庫,地址是這個 https://github.com/Phrogz/svg2geojson 哪审,這個庫可以說相當(dāng)不錯了蛾魄,唯一的缺點(diǎn)是,它不會讀取圖形的id信息湿滓,它導(dǎo)出的geojson不能區(qū)分每一個圖形滴须,所以在它的基礎(chǔ)上做了修改,這個修改是將id里的信息檢索出來放在geojson的properties屬性中叽奥,修改后的代碼地址:https://github.com/lastcaveman/svg2geojson

  • 根據(jù)我的業(yè)務(wù)修改的主要代碼如下:將商鋪的名稱和位置檢索出來
image.png
  • 你可以根據(jù)自己的需要在原作者的基礎(chǔ)上做修改
  • 具體的導(dǎo)出方法 原作者的github上已經(jīng)說了

將geojson導(dǎo)出扔水,來看一下數(shù)據(jù)格式:


image.png

它是這樣的json數(shù)據(jù),properties里是我們想要的標(biāo)識圖形的屬性朝氓,coordinates存放的是構(gòu)成圖形的點(diǎn)的坐標(biāo)集魔市。

繪制地圖

以上是數(shù)據(jù)準(zhǔn)備主届,最后效果的代碼地址在這里:https://github.com/ZhenhuaChen/customizeMap/blob/master/mall_map.html

圖表庫可以選擇G2 也可以選擇echarts,這里介紹Echarts待德。

$.getJSON('http://testcdn.zhimatech.com/map.json',function(value) {
    echarts.registerMap('mallMap',value);
})

echarts 提供自定義地圖的api君丁,registerMap('地圖名稱',地圖數(shù)據(jù)),這里為了方便我讀取數(shù)據(jù)我將geojson的后綴改為json将宪,使用上是一樣的绘闷。
接下來就是地圖的樣式部分,我們知道echarts中繪制地圖可以選擇geo也可以選擇series的type為map较坛,如果你要在地圖上繪制別的圖表印蔗,譬如線圖、點(diǎn)圖那么這里你需要將地圖以Echarts中的geo方式呈現(xiàn)

 geo: {
        map: 'mallMap',
        roam:true,
        ...
    },

這樣地圖就有了


image.png

畫圖表

如果你使用echarts繪制線圖丑勤,還需要知道每個圖形的中心點(diǎn)华嘹;這里就需要借助G2的Dataset:

 // value為地圖的json數(shù)據(jù)
var shop_center_point_arr  = {}
 var worldMap = ds.createView().source(value, {
        type: 'GeoJSON'
    }).transform({
        type: 'map',
        callback: function callback(row) {
            let t_key = row.name
            let obj = {};
            shop_center_point_arr[t_key] = [row.centroidX,row.centroidY]
            return row;
        }
    })
// shop_center_point_arr:{'漢堡王',[x,y]}

shop_center_point_arr 就存儲了圖形的名稱和對應(yīng)中心點(diǎn)坐標(biāo)
這時(shí)候就可以繪制線圖了(lines) ,具體繪制方法可以參考echarts官網(wǎng)确封,或者去https://github.com/ZhenhuaChen/customizeMap/blob/master/mall_map.html查看我寫的小示例除呵!

完成地圖的繪制后echarts官網(wǎng)上所有有關(guān)地圖的圖表就都可以搬到你自己的地圖上實(shí)現(xiàn)啦!幫到你的話點(diǎn)贊吧爪喘!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颜曾,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子秉剑,更是在濱河造成了極大的恐慌泛豪,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侦鹏,死亡現(xiàn)場離奇詭異诡曙,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)略水,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進(jìn)店門价卤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人渊涝,你說我怎么就攤上這事慎璧。” “怎么了跨释?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵胸私,是天一觀的道長。 經(jīng)常有香客問我鳖谈,道長岁疼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任缆娃,我火速辦了婚禮捷绒,結(jié)果婚禮上瑰排,老公的妹妹穿的比我還像新娘。我一直安慰自己疙驾,他們只是感情好凶伙,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著它碎,像睡著了一般函荣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扳肛,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天傻挂,我揣著相機(jī)與錄音,去河邊找鬼挖息。 笑死金拒,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的套腹。 我是一名探鬼主播绪抛,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼电禀!你這毒婦竟也來了幢码?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤尖飞,失蹤者是張志新(化名)和其女友劉穎症副,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體政基,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贞铣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沮明。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辕坝。...
    茶點(diǎn)故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖荐健,靈堂內(nèi)的尸體忽然破棺而出酱畅,到底是詐尸還是另有隱情,我是刑警寧澤摧扇,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站挚歧,受9級特大地震影響扛稽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜滑负,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一在张、第九天 我趴在偏房一處隱蔽的房頂上張望用含。 院中可真熱鬧,春花似錦帮匾、人聲如沸啄骇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缸夹。三九已至,卻和暖如春螺句,著一層夾襖步出監(jiān)牢的瞬間虽惭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工蛇尚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芽唇,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓取劫,卻偏偏與公主長得像匆笤,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子谱邪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評論 2 354

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

  • 1.引入 官網(wǎng)下載js引入炮捧,npm引入,cdn引入 2.使用 首先準(zhǔn)備一個具備寬高的容器虾标,然后通過echarts提...
    三十六計(jì)至做筆記閱讀 1,764評論 0 0
  • 1. 動畫與互動 在敘事結(jié)構(gòu)中全面應(yīng)用創(chuàng)意D3如何幫你在可視化圖表中添加動畫與互動用地理特征創(chuàng)建D3地圖了解別人如...
    esskeetit閱讀 834評論 1 0
  • 一年中總有想買衣服的時(shí)候寓盗,在網(wǎng)上買衣服看款式看評價(jià)也很花時(shí)間的不比逛街輕松,下了單等幾天快遞到了發(fā)現(xiàn)衣服和自己在圖...
    30歲的日記閱讀 1,119評論 0 0
  • 它處的風(fēng)光 總不如故鄉(xiāng) 月不如故鄉(xiāng)的圓 風(fēng)不如故鄉(xiāng)的暖 只有一朵飄蕩的云 仿佛故鄉(xiāng)的云 多想做一朵云 故鄉(xiāng)的云 飄...
    寂寞空間閱讀 177評論 1 5
  • 我于1977年出生,目前已經(jīng)有43歲蘸吓∩旗牛回首25年前自己,那時(shí)18歲库继,那時(shí)候自己剛剛走出學(xué)校是一所師范學(xué)校箩艺,...
    洮北681段洪彥閱讀 239評論 0 6