[轉]Google Maps的內部機制(部分)

原文:http://spaces.msn.com/gemtang/

Google Maps 與以前的ArcIMS、MapXtreme等二次開發出來的系統有着本質的不同:

  1.地圖預先生成,這一點是首當其衝的,說了很多次了。

  2.地圖切片,客戶端同時下載。當地圖窗口發生移動、縮放時,便需要下載新的圖片來填充新的區域,在這裏充分利用了瀏覽器(如IE)的多線程同時下載的功能,另外,下載過的圖片無需再次訪問服務器下載。缺點就是客戶端編寫需要大量腳本來支持。

  3.由於服務器不是實時地根據矢量數據生成地圖圖片,就造成了地圖數據無法及時更新。但若仔細察看,不難發現Google Maps上的數據其實大部分是道路交通、行政邊界,其他的POI(Point Of Interests)信息並不是固化在地圖上的,如此便使人覺得地圖稍顯單調,好在高質量的衛片影像彌補了此不足。Google通過客戶端腳本技術,把用戶的搜索結果(也就是各種POI數據)以“大頭針”圖片的形式展現在客戶端瀏覽器上,比如有名的官方Pizza店示例。反過來一想,還真得佩服Google的設計:POI數據是經常更新的,而基礎數據(Framework dataset,比如高級別的道路、橋樑、城市、湖泊等)則是很少變動的,即便是某些小道路發生變化,也可以很方便的生成該範圍的地圖斑塊,這個工作量是較小的。

  4.上面提到了POI數據,其實它是動態生成的(當然,也可以是靜態的),這個怎麼說呢?好比Google的網絡爬蟲找到了某個公司的門戶網站,分析出了該頁面的內容結構並找到了其聯繫方式:##,**Road,**City,通過Geocoding技術便可在地圖上找到其位置。

  5.由於地圖圖片的預生成,以前的WebGIS站點經常提供的“圖層控制”功能便無法達到,其實,這個並不影響用戶的使用體驗——Google地圖是如此的清晰明瞭,用那玩意兒幹啥?

  6.拋棄“鷹眼”窗口,也就是那個縮略圖,可能有人覺得用起來不太習慣——因爲你不知道目前瀏覽到具體哪個位置了。但是,想想看:全世界的地圖,當你放到到很細節的地方時,鷹眼上的顯示框會多麼的小啊,絲毫沒有意義。

  7.在地圖上彈出Info Window以顯示詳細信息,底層實現使用了XML和XSLT,的確在界面上和視覺上給人以衝擊,而且這也的確是一個好主意——既很好的節約了頁面空間,又方便了用戶操作。

  8.“圖中圖”。該功能可謂煞費苦心,看看人家就是做得細緻,在彈出的Info window中還有一個小地圖來顯示周圍的情況,還可以在小地圖上進行縮放,有點兒類似放置了一個放大鏡在那裏,真夠絕的。

  9.瘋狂的運用Javascript腳本,恰好現在的Web設計又迴歸Javascript,特別是自AJAX的流行以來,似乎有喚醒了大家對瀏覽器端的腳本的重視。Google Maps的腳本可不是一段兩段,而是超過了萬行,就拿它在客戶端顯示路徑這個功能來說,就必須牽涉到XML解析、路徑數據的轉碼(Google在傳輸路徑的位置座標時作了編碼處理)、VML渲染、如果非IE則需要訪問服務器以便讓服務器程序畫出路徑並回傳圖片……如此林林總總,不一而足。

發佈了14 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章