- 作為一個(gè)比較喜歡出去見識(shí)世界、看看自然風(fēng)光的人,這幾年有幸跑了一些地方挣饥,在祖國(guó)大地不同的地方見識(shí)了不同的人文風(fēng)物,手機(jī)里也存了不少照片沛膳,想著如果以某種方式展現(xiàn)來(lái)回憶我的旅途的話扔枫,或許會(huì)給自己帶來(lái)不一樣的體驗(yàn)。目標(biāo)口號(hào)已經(jīng)想好:去過(guò)的風(fēng)景锹安,直觀豐富地展示你的人生旅途短荐,帶來(lái)新的回憶感受。在看到leaflet開源地圖庫(kù)時(shí)叹哭,覺(jué)得可以比較簡(jiǎn)單地初步實(shí)現(xiàn)我的想法忍宋。
初步效果
思路
- 一般手機(jī)照片都包含豐富的信息风罩,如拍攝時(shí)間等等糠排,而python又有強(qiáng)大的PIL圖像處理庫(kù),使得我們可以輕松解析照片信息超升。在服務(wù)端我們可以使用Django來(lái)負(fù)責(zé)產(chǎn)生簡(jiǎn)單的上傳機(jī)制入宦,將上傳的圖片放入靜態(tài)資源文件夾以提供路由哺徊,并且對(duì)照片進(jìn)行解析,獲得的信息利用Django自帶的ORM編寫照片信息模型乾闰,存入默認(rèn)的sqlite3數(shù)據(jù)庫(kù)落追,十分簡(jiǎn)便,然后利用Django-restframework庫(kù)將照片信息生成api涯肩,方便前端異步獲取轿钠。在前端利用leaflet地圖庫(kù)生成展示效果,為了以后的開發(fā)宽菜,采用了vuejs框架谣膳,利用vue-resource從api異步get數(shù)據(jù),并同步到頁(yè)面铅乡。
- 這樣我們使用時(shí)便可以方便地一步上傳照片继谚,在地圖上再現(xiàn)我們?nèi)ミ^(guò)的風(fēng)景,點(diǎn)擊出現(xiàn)當(dāng)時(shí)的情景阵幸。當(dāng)然直接根據(jù)照片只獲得了基本的時(shí)間和經(jīng)緯度信息花履,進(jìn)一步我們可以提供提交修改功能,讓用戶自己較為精細(xì)地修正地理位置(某些地理位置并不十分準(zhǔn)確)挚赊,并對(duì)照片做注解诡壁,提交回憶文本,然后一并展示荠割。更進(jìn)一步是利用時(shí)間數(shù)據(jù)妹卿,動(dòng)態(tài)地顯示我們的旅途軌跡,以及自動(dòng)生成整個(gè)人生旅途的動(dòng)態(tài)展示效果蔑鹦。
- leaflet文檔很詳細(xì)豐富夺克,api文檔也很美觀,插件也不少嚎朽。使用leaflet使用兩三句js語(yǔ)句就可以輕松地產(chǎn)生應(yīng)用效果铺纽。不要對(duì)文檔望而生畏,我一開始也嫌煩哟忍,懶得看狡门,后來(lái)靜下心一看發(fā)現(xiàn)很容易上手。在github上還有中文地圖圖層提供商的列表(不需要api key)锅很,我使用了高德地圖其馏,個(gè)人比較喜歡”玻可用插件有Leaflet.EasyButton尝偎、Leaflet.markercluster。
代碼
- life-journey,暫時(shí)偷個(gè)懶致扯。肤寝。