30 十月 2008 @ 10:49 上午 
最近花了點時間更新了「你的地圖小畫家」,之前的雛型是半年前完成的,但是其中有相當多的bug,當初也沒將資料的傳送考慮進去,尤其是線段的資料是以經緯度紀錄的,因此繪圖物件一多,資料量就變的相當龐大,原本一直不曉得該怎麼解決這個問題,後來終於讓我找到polyline encoding 的演算法,演算法本身不難,而且也都有各種語言的實做,真是另我振奮,難怪google map的路徑規劃可以在拖動地圖的同時做到即時的路線導航,不僅routing的速度快,編碼過後的Polyline資料也非常小。 例如六個點的data: 25.074098796077788,121.5333366394043 25.061970436616313,121.51926040649414 25.045486382633943,121.52029037475586 25.042375935197878,121.52509689331055 25.03771011611953,121.53196334838867 25.037087993498368,121.53745651245117 經過編碼之後變成: ah`xCi~wdVvjA|vAlu@hRro@wXlR_]b\}i@|Bia@ 如何?是不是差別很多? 因此這幾天將資料儲存的部份全部重寫,果然傳送速度比之前快了非常多,算是一大突破。將來可以再增加插入圖片、文字的功能(已經計畫很久了XD)。 這次的改版除了資料量的大幅降低,並且採用我最近狂用的jQuery,在FF3與IE7.0測試過沒問題。 後記:做這種工具軟體,最重要的就是「復原」功能,尚未加入復原功能時,給朋友測的的第一個反應都是:「靠腰~不能復原阿XD」 我要玩看看「你的地圖小畫家」
Posted By: BLACKBING
Last Edit: 30 十月 2008 @ 10:49 上午

EmailPermalinkComments (0)
Tags
Tags:
Categories: Programing
 19 十月 2008 @ 2:34 上午 
parseInt是強制將字串轉型成整數型態的function,但有時候會發生一些奇怪的事情:
parseInt("12px")=12
parseInt("abc")=NaN
parseInt(" ")=NaN
parseInt("092")=0
parseInt的規則是遇到非數字字元即停止,因此前三個是可以理解的結果。等等,那最後一個是怎麼回事,"092″應該會被轉成92吧,這個問題一直是我非常疑惑的問題,原來parseInt遇到0開頭的字串,會自動轉為8進位制計算,這實在是令人很不解,還好parseInt可以指定進位制,第二個參數即為進位制。
parseInt("092", 10) = 92
如此則可以解決這奇怪的問題,javascript : good parts也建議在這個function都加入第二個進位制的參數,避免不必要的錯誤。 另外也有人會用new Number來解決這個問題,例如:
var str = '092';
var num = new Number(str);
console.log(num); // 92
可以解決parseInt的這個奇怪現象,但在javascript: good parts這本書則指出javascript中這種「typed wrapper」是一種多餘的寫法,例如new Boolean, new Number, new String, new Object, new Array,事實上完全不需要這個功能。而我之前也在new Object() vs {} and new Array() vs [] 效能比較這篇文章 測試過直接用[]、{}來new 陣列和物件的比較,顯然typed wrapper的方式多了一個轉換的步驟,因此有效能上的差異。
Posted By: BLACKBING
Last Edit: 19 十月 2008 @ 02:34 上午

EmailPermalinkComments (0)
Tags
Tags:
Categories: Programing

 Last 50 Posts
Change Theme...
  • Users » 17
  • Posts/Pages » 59
  • Comments » 28
Change Theme...
  • VoidVoid « Default
  • LifeLife
  • EarthEarth
  • WindWind
  • WaterWater
  • FireFire
  • LightLight

About Me



    No Child Pages.

留言板



    No Child Pages.

Album



    No Child Pages.