要使用OpenLayers,您可以到它的官方網站http://www.openlayers.org下載他的壓縮 包,解壓后可以看到其中的一些目錄和 文件。拷貝dist目錄下的OpenLayer.js、根目錄下的lib目錄、根目錄下的img目錄到你網站的scripts目錄下(當然,這個只是例 子,您網站的目錄結構您自己說得算,只要保證OpenLayers.js,/lib,/img在同一目錄中即可)。
OpenLayers中最重要的2個對象Map和Layer.
OpenLayers.Map的實體化方法:
var map = new OpenLayers.Map("map");
這里參數"map"對應頁面中顯示Map地圖的DIV的id名稱。
OpenLayers.Layer為創建圖層對象,OpenLayers提供了很多圖層的擴展:
* OpenLayers.Layer.Image
* OpenLayers.Layer.HTTPRequest
* OpenLayers.Layer.Grid
* OpenLayers.Layer.WMS
* OpenLayers.Layer.KaMap
* OpenLayers.Layer.EventPane
* OpenLayers.Layer.Google
* OpenLayers.Layer.VirtualEarth
* OpenLayers.Layer.Markers
* OpenLayers.Layer.Text
* OpenLayers.Layer.GeoRSS
* OpenLayers.Layer.Boxes
* OpenLayers.Layer.TMS
Image類封裝一個實際圖象作為圖曾內容
HTTPRequest類可以接收一個動態生成的圖片,你可以通過HTTPRequest類的參數向 服務器發送參數
Grid類是HTTPRequest類的子類,提供更加詳細的方法
WMS類用於連接WMS服務器以獲得圖象
KaMap 類用於連接MapServer
EventPane類作為用於接收用戶操作的圖層
Google類用於從Google獲得圖象,它仍然需 要你從Google獲得API KEY,並且include
VirtualEarth類用於操作VirtualEarth的圖層
Markers 類用於生成接收和顯示用戶本地標記的圖層
Text類用於接收CSV文件
GeoRSS類是Marker類的子類,用於封裝接收 GeoRSS並在圖層中作出marker
Boxes同樣也是Marker類的子類,可以用div來做marker,而非image
TMS 用於接收TMS服務器的地圖
OpenLayers還提供了豐富的Control類為地圖瀏覽添加一些工具,繼承自OpenLayers.Control類
* OpenLayers.Control.LayerSwitcher
* OpenLayers.Control.MouseDefaults
* OpenLayers.Control.MousePosition
* OpenLayers.Control.MouseToolbar
* OpenLayers.Control.OverviewMap
* OpenLayers.Control.PanZoom
* OpenLayers.Control.PanZoomBar
* OpenLayers.Control.Permalink
* OpenLayers.Control.Scale
這些類的實例會在地圖瀏覽的“窗口”上增加一些工具欄或是“按鈕”,增加互動性和功 能性。
OpenLayers對常用的數據結構進行了封裝
# OpenLayers.LonLat
# OpenLayers.Size
# OpenLayers.Pixel
# OpenLayers.Bounds以便於操作。
現在寫個最簡單的例子做記錄:
<%
@ page language
=
"
java
"
pageEncoding
=
"
UTF-8
"
%>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
< head >
< title > WMS MAP INIT </ title >
< script src ="http://localhost:8080/geoserver/openlayers/OpenLayers.js" type ="text/javascript" ></ script >
< style type ="text/css" >
#map {
width : 100% ;
height : 100% ;
border : 1px solid black ;
}
</ style >
< script defer ="defer" type ="text/javascript" >
function init(){
// 數據存儲的左、下、右、上的范圍,默認為NULL
var bounds = new OpenLayers.Bounds(
17831.799 , 91085.208 ,
18221.799 , 91287.26
);
// 創建一個OpenLayers.Map構造新的地圖。
var options = {
controls: [],
maxExtent: bounds,
maxResolution: 1.5234375 ,
projection: " EPSG:4326 " ,
units: 'degrees'
};
var map = new OpenLayers.Map('map', options);
// 創建一個圖層信息
var layer = new OpenLayers.Layer.WMS( " State " , " http://127.0.0.1:8080/geoserver/wms " , {
layers: " dwg:0_line "
}); //
// 將創建的圖層對象添加到Map對象
map.addLayer(layer);
// 顯示地圖
map.zoomToMaxExtent();
}
</ script >
</ head >
< body onload ="init()" >
< div id ="map" ></ div >
</ body >
</ html >
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
< html >
< head >
< title > WMS MAP INIT </ title >
< script src ="http://localhost:8080/geoserver/openlayers/OpenLayers.js" type ="text/javascript" ></ script >
< style type ="text/css" >
#map {
width : 100% ;
height : 100% ;
border : 1px solid black ;
}
</ style >
< script defer ="defer" type ="text/javascript" >
function init(){
// 數據存儲的左、下、右、上的范圍,默認為NULL
var bounds = new OpenLayers.Bounds(
17831.799 , 91085.208 ,
18221.799 , 91287.26
);
// 創建一個OpenLayers.Map構造新的地圖。
var options = {
controls: [],
maxExtent: bounds,
maxResolution: 1.5234375 ,
projection: " EPSG:4326 " ,
units: 'degrees'
};
var map = new OpenLayers.Map('map', options);
// 創建一個圖層信息
var layer = new OpenLayers.Layer.WMS( " State " , " http://127.0.0.1:8080/geoserver/wms " , {
layers: " dwg:0_line "
}); //
// 將創建的圖層對象添加到Map對象
map.addLayer(layer);
// 顯示地圖
map.zoomToMaxExtent();
}
</ script >
</ head >
< body onload ="init()" >
< div id ="map" ></ div >
</ body >
</ html >