由HTML5繪制地圖說開去


HTML5現在已經成為移動開發的另一個焦點,關於native app和web app以及雜交app的討論也已經不少。原來光芒四射的Flash,Adobe公司宣布放棄移動版的開發,而轉向更大力度的支持HTML5。雖然說HTML5里的Canvas可以在今后替代Flash,但個人覺得似乎也不樂觀,我們來說幾件事情吧。

近十年前就看到flashk(一個組織后來就消亡了)做過一個基於flash的管網系統,那時候就覺得用flash做一個地圖引擎,那應該是多牛。

后來覺得SVG不錯,我都有點同GML有點相提並論了,但SVG至今依然不是HTML5的一部分,而且這么多年也沒有一個牛的應用是用SVG做的,雖然SVG看起來挺強大的,支持熱點、支持內嵌js等,並且很多瀏覽器對SVG的支持也不錯。(最早有見過用SVG來做地圖的,那應該在我06年時寫博客有提到過,但那時候瓦片地圖都應該是在大家努力研究的狀態吧)

昨天晚上開始研究百度的地鐵地圖,是用flash做的,矢量化的,做的還是挺漂亮的,我一直很喜歡,但移動設備基本上不能用(對flash不支持或者支持不佳)。研究這個東西呢有兩個意圖,一是把它離線,讓其他網站也能用,另一就是想直接看看他們的數據,畢竟自己做數據還是比較累人的。現在的結果是,本地顯示基本OK,部分功能不可用(比如路徑演算就一定是需要服務端支持的,發現地鐵的路徑演算竟然是百度地圖的一個部分,演算完畢后地鐵程序解析獲取到的JSON數據,可能地鐵換乘也算是百度步行導航演算的一個部分吧,我卡殼的是地鐵的JS不能獲取JSON以及解析,不知道是否和跨域有一定的關系否)。地鐵數據部分,也已經看到數據,是一個二維平面下的一系列坐標點集合,准備導出來看看能否直接成圖。

今天花了一點時間,把HTML5中的Canvas章節,簡單的瀏覽了一遍。雖然有不少的函數,但似乎同繪圖工具有所類似了,讓我想到了mapinfo,什么畫線、畫面、畫圓、畫弧線、填充顏色、設置包邊的粗細和顏色等等等。我在想:若使用HTML5繪圖,那不僅僅是要將地圖繪制一遍(獲得坐標控制點),更需要將地圖通過JS語言來去實現一遍。OMG,想起來就覺得有點頭大,難道flash當年也如此麻煩?即便flash如此麻煩,那也至少是有可視化編輯環境的,那HTML5的繪圖是否會有可視化的編輯環境呢?(也許只是我還沒有發現吧)。另外補充一句:flash的問題確實比較多,比如非常占用CPU、比較耗電,那么HTML5的Canvas就不會有這問題嗎?

后來搜索“HTML5 Canvas map”的時候,看到兩個地圖,一個世界地圖,另一個是美國地圖,都是用HTML5繪制的,突然覺得HTML5繪制地圖看起來希望很大嘛,於是研究了一下這個開源的美國HTML5地圖,但簡單看了下,就覺得怕了,因為:美國地圖繪制的固然漂亮,但繪制的那一系列平面坐標點是如何而來的呢?當然,不排除是有工具的,但我覺得,若要做到這樣,那是多么的艱辛那(看他的Map.js文件,總共近1300行,地圖數據就占據了一半)。有興趣的朋友就去看看吧:http://dougx.net/map/usmap.html

不過,既然HTML5大勢如此,那HTML5的將來一定是璀璨的,只是,可以得到一個結論是:在沒有一個好用的工具之前,用HTML5來繪制地圖,是一件非常非常麻煩的事情,更不用說將HTML5的繪圖做成引擎,實現放大縮小平移以及熱點響應事件等操作了。看到一個HTML5做的巨牛網站,甚是欣慰,動畫效果同flash有的一拼,觀摩地址:http://www.ro.me/。(雖然是效果巨牛的HTML5動畫網站,但工程其實挺大的,查看源文件,發現一個頁面加載了90多個功能js,繪圖js也是讓人眼花的坐標系列,看下這個文件會不會嚇到你,呵呵)

總結幾句廢話:

1、做件事情很不容易

2、工具(或者說是框架或引擎之類的東西,比如openlayers引擎、jQuery框架等)很有用

3、可用性和易用性很關鍵

最后問大家一句:你會用HTML5去繪制地圖否?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM