| 208 | * 關於 !LoadLocation(); 這行程式 |
| 209 | {{{ |
| 210 | function LoadLocation() { |
| 211 | |
| 212 | ### 參考 http://code.google.com/intl/zh-TW/apis/gadgets/docs/legacy/remote-content.html#Fetch_text |
| 213 | ### _IG_FetchContent(url, func) 是一個 Mapplet 的 callback 函數,用來定義擷取 url 之後該執行哪個 func 函數 |
| 214 | |
| 215 | ### 這裡定義要去擷取 URL.location_url , |
| 216 | ### 也就是 http://redcliff.googlecode.com/svn/trunk/data_tc/location.json?bpc=12191314 |
| 217 | ### [備註] 加上 bpc= 是為了清除 google code 的 cache ,這點在程式碼裡面也有寫上註解 |
| 218 | ### <!-- NOTE: Add "?bpc=<radnom>" to by pass the cache for the css file. --> |
| 219 | |
| 220 | _IG_FetchContent(URL.location_url, function(data) { |
| 221 | |
| 222 | ### 宣告 json 變數等於 callback 函數回傳回來的 data |
| 223 | ### 參考 http://www.w3schools.com/jsref/jsref_eval.asp |
| 224 | |
| 225 | ### location.json 裡的內容 |
| 226 | ### [ {"name" : "成都" , "lat" : 30.670992 , "lng" : 104.067993 }, ... ] |
| 227 | |
| 228 | var json = eval(data); |
| 229 | |
| 230 | ### 依序把 location.json 裡的 name 跟 location (lat,lng) 設定上去 |
| 231 | |
| 232 | $.each(json, function(index, location) { |
| 233 | |
| 234 | ### var LOCATION = new Hash(); 這裡的 LOCATION 物件是一個 Hash (湊雜) |
| 235 | ### Hash 類別必須參考原始碼中 Hash.prototype 定義了 5 個 method |
| 236 | ### removeItem(in_key), getItem(in_key), setItem(in_key, in_value), hasItem(in_key), getLength() |
| 237 | ### 還有 length 跟 item 兩個 field. |
| 238 | ### 照 setItem(in_key, in_value) 語法看起來應該會產生一個 二維陣列 (Array) |
| 239 | |
| 240 | ### 這裡還呼叫了 Location 建構子 |
| 241 | ### function Location(raw_location) { |
| 242 | ### var me = this; |
| 243 | ### this.location = raw_location; |
| 244 | ### this.name = location.name; |
| 245 | ### this.point = new GLatLng(raw_location.lat, raw_location.lng); |
| 246 | ### }; |
| 247 | |
| 248 | ### 因此這一行的最後結果應該是 |
| 249 | ### Location.item=[{"成都",GLatLng(30.670992,104.067993)},{...}] 這樣一個二維陣列 |
| 250 | |
| 251 | LOCATION.setItem(location.name, new Location(location)); |
| 252 | }); |
| 253 | ### 呼叫 LoadElement() 跟 LoadEvent() |
| 254 | LoadElement(); |
| 255 | LoadEvent(); |
| 256 | }); |
| 257 | }; |
| 258 | }}} |