天天看點

OpenLayer + Ags 綜合應用(一)--OpenLayer 地圖展現

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示例中最簡單的地圖展現開始

OpenLayer + Ags 綜合應用(一)--OpenLayer 地圖展現

Code

    幾個關鍵點:

    (1)引入OpenLayer.js

    (2)body onload中初始化地圖

    OpenLayer.Layer要和中文翻譯的“圖層”概念區分開,這裡的一個Layer是一個完整的服務,例如Ags伺服器釋出出來的一個WMS服務,這個服務可能有一個或多個圖層組成。

    2.了解OpenLayer.Layer

OpenLayer + Ags 綜合應用(一)--OpenLayer 地圖展現

    這裡添加了三個wms服務,每個服務都是作為OL Map的一個Layer,運作之後可以看到Base Layer和Overlayers,并不包含三個服務中的具體圖層。

OpenLayer + Ags 綜合應用(一)--OpenLayer 地圖展現

    服務前面有的是單選框,有的是複選框,顯示複選框是因為設定了transparent為true,透明圖層一般放置在地圖上方,不會用做底圖,是以OL使用複選框友善使用者選擇或取消該服務地圖的顯示,設定為false之後,全部為底圖隻能單選。

OpenLayer + Ags 綜合應用(一)--OpenLayer 地圖展現

    3.一次性添加多個服務

    除了map.addLayers逐個添加服務外,還可以将多個服務作為一個Array一次性加入map中:

OpenLayer + Ags 綜合應用(一)--OpenLayer 地圖展現

    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外還有:

OpenLayer + Ags 綜合應用(一)--OpenLayer 地圖展現

    還可以設定第四組參數{'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,如需轉載請自行聯系原作者

繼續閱讀