OpenLayers基礎知識:
OpenLayers是一個開源的js框架,用于在您的瀏覽器中實現地圖瀏覽的效果和基本的zoom,pan等功能。OpenLayers支持的地圖來源
包括了WMS,GoogleMap,KaMap,MSVirtualEarth等等,您也可以用簡單的圖片作為源,在這一方面OPenLayers提供了
非常多的選擇。 要使用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>