OpenLayer是一個用于浏覽器地圖展示的js庫,用于建構基于網絡的地理應用,OpenLayer使用Prototype.js和Rico作為核心庫的基礎,實作了工業标準的地理資料通路方法(OGC标準)。在企業級GIS應用中,能較好的作為用戶端應用開發架構,消除和GIS服務層之間的耦合。
ArcGIS Server 9.3對OGC标準提供了更好的支援,OGC标準成為了OpenLayer和ArcGIS Server服務連接配接的橋梁,基于Ags服務進行OpenLayer開發,是除了adf、js/flex/silverlight api官方開發架構之外的新選擇。
網上已經有很多OpenLayer開發的資源:
or Google Search "OpenLayer"
該系列文章會重複部分OpenLayer功能實作,但更重要的是和大家一起研究OpenLayer設計模式,及如何有效利用Ags服務進行OpenLayer開發。
準備工作:
1.下載下傳OpenLayer 2.7
2.成功安裝ArcGIS Server 9.3
3.準備一套完整的Sample資料,可以從ArcGIS Tutor中copy一份,也可以使用自己已有的或從網站上下載下傳資料。
暫時無法做好2、3準備工作沒有關系,先從OpenLayer(簡稱OL)開始。
主體内容:
1.分析OL代碼架構和構成請參考其他文章,從Sample示例中最簡單的地圖展現開始

Code
幾個關鍵點:
(1)引入OpenLayer.js
(2)body onload中初始化地圖
OpenLayer.Layer要和中文翻譯的“圖層”概念區分開,這裡的一個Layer是一個完整的服務,例如Ags伺服器釋出出來的一個WMS服務,這個服務可能有一個或多個圖層組成。
2.了解OpenLayer.Layer

這裡添加了三個wms服務,每個服務都是作為OL Map的一個Layer,運作之後可以看到Base Layer和Overlayers,并不包含三個服務中的具體圖層。
服務前面有的是單選框,有的是複選框,顯示複選框是因為設定了transparent為true,透明圖層一般放置在地圖上方,不會用做底圖,是以OL使用複選框友善使用者選擇或取消該服務地圖的顯示,設定為false之後,全部為底圖隻能單選。
3.一次性添加多個服務
除了map.addLayers逐個添加服務外,還可以将多個服務作為一個Array一次性加入map中:

4.OL文檔
name {String} A name for the layer
url {String} Base url for the WMS (e.g. http://wms.jpl.nasa.gov/wms.cgi)
params {Object} An object with key/value pairs representing the GetMap query string parameters and parameter values.
options {Ojbect} Hashtable of extra options to tag onto the layer
到此就沒有更詳細的說明了,隻能根據Sample示例和源碼去積累,如第三組參數除layers外還有:

還可以設定第四組參數{'displayInLayerSwitcher': false},layer服務将不顯示在服務清單(上圖中的藍色面闆)中,預設值為true。{'isBaseLayer': false},預設值為true,服務前顯示單選框。這些都需要我們逐漸去摸索。
5.OpenLayers.Layer.WMS
剛才提到過兩個參數displayInLayerSwitcher、isBaseLayer,它們并沒有在OpenLayers.Layer.WMS定義,而是在父類OpenLayers.Layer,中間還有OpenLayers.Layer.HTTPRequest、 OpenLayers.Layer.Grid,文檔中沒有詳細說明,但可以從源碼中獲得更多資訊。從這種繼承關系中可以發現,OpenLayers繼承全部通過prototype原型繼承方式實作。
小結:
Map對象是地圖展示的核心,一切和地圖操作相關都要和Map打交道,裡面的屬性方法很多,可以去學習controls入手,之前我們都沒有定義 controls,但還是可以通過滑鼠操作地圖,那是因為預設情況下,地圖自動擁有Navigation、PanZoom、ArgParser、 Attribution四個controls。
本文轉自Flyingis部落格園部落格,原文連結:http://www.cnblogs.com/flyingis/archive/2008/11/07/1328987.html,如需轉載請自行聯系原作者