WebGIS客户端的JavaScript库:OpenLayers

  OpenLayers是一个用于开发WebGIS客户端的JavaScript库。OpenLayers实现访问地理空间数据的方法都符合行业标准。比如 OpenGIS的WMS(Web Mapping Service)和WFS(Web Feature Service)规范。OpenLayers采用面向对象方式开发,并使用来自Prototype.js和Rico中的一些组件。 由于OpenLayers是采用JavaScript实现的,不存在包的概念,但是它可以通过命名空间来实现类似包的功能。另外,JavaScript不存在继承的感念,也不存在私有、公有、保护等概念,OpenLayers中所谓的继承其实就是将基类中的所有属性和方法复制到子类中去。
          在操作方面,OpenLayers 除了可以在浏览器中帮助开发者实现地图浏览的基本效果,比如放大(Zoom In)、缩小(Zoom Out)、平移(Pan)等常用操作之外,还可以进行选取面、选取线、要素选择、图层叠 加等不同的操作,甚至可以对已有的OpenLayers 操作和数据支持类型进行扩充,为其赋予更多的功能。例如,它可以为OpenLayers 添加网络处理服务WPS 的操作接口,从而利用已有的空间分析处理服务来对加载的地理空间数据进行计算。同时,在OpenLayers提供的类库当中,它还使用了类库 Prototype.js 和Rico 中的部分组件,为地图浏览操作客户端增加Ajax 效果。 OpenLayers官方地址:http://openlayers.org/
    下面对OpenLayers进行一些概述,以便大家更好的学习和利用openlayers。

一、OpenLayers命名空间:


如上图所示,OpenLayers是整个webgis系统的最外层命名空间,所有的地理信息系统相关web程序都在此命名空间下,在此命名空间下又创建了其他的命名空间来管理相关功能的程序。在这个命名空间下定义了一些基础类和基类来构建整个框架。

1、class OpenLayers.Map

Map类实例化的对象为地图容器,可以向地图容器里面添加图层和控件。
构造函数

构造函数
描述
Map(
  string divId,
  Object options

创建地图容器对象。
string divId:页面的div元素ID,
Object options:地图容器的相关属性。

属性

属性
类型
描述
events
OpenLayers.Events
地图上能响应的事件集合
layers
OpenLayers.Layer
地图上的图层集合

方法

方法
返回值
描述
getTileSize()
OpenLayers.Size
返回瓦片尺寸
addLayer(Layer layer)
none
向地图容器中添加层,Layer:OpenLayers.Layer
addLayers(Layer [])
none
向地图容器中批量增加层,Layer:OpenLayers.Layer
removeLayer(
  Layer layer,
  Boolean setNewBaseLayer
)

none
移除层。
Layer:OpenLayers.Layer,删除的层。如果setNewBaseLayer为true从新设置新的baseLayer,默认为true

setBaseLayer(Layer layer)
none
设置新的baseLayer,隐藏原来的baseLayer,Layer:OpenLayers.Layer
addControl(Control c)
none
向地图容器中添加控件,Control:OpenLayers.Control
removeControl(Control c)
none
从地图容器中移除控件,Control:OpenLayers.Control
addPopup(
  Popup pp,
  Boolean closeOther
)

none
新增弹出窗口。参数:pp为弹出窗口, closeOther为是否排它即移除其它弹出窗口 。Popup:OpenLayers.Popup.
 
removePopup(Popup pp)
none
移除弹出窗口,Popup:OpenLayers.Popup
getZoom()
int
获取地图当前缩放级别
panTo(LonLat ll)
none
地图中心按指定的方式平滑到新的坐标, LonLat:OpenLayers.LonLat
setCenter(
  LonLat ll,
  Int zoom,
  Boolean drag,
  Boolean zoomChange
)

none
重新设置地图中心,缩放比列。
LonLat ll:设置地图中心的经纬度,LonLat:OpenLayers.LonLat
Int zoom:缩放级别
Boolean drag:是否触发movestart/end事件
Boolean zoomChange:是否触发zoomchange事件

getProjection()
string
返回投影对象代码,3.0版本将改成返回投影对象
getNumZoomLevels()
Int
返回baseLayer的缩放级别数
zoomTo(int zoom)
none
改变地图的缩放级别
zoomIn()
none
放大一个级别
zoomOut()
none
缩小一个级别
zoomToScale(float scale)
None
缩放到给定的尺寸
getLonLatFromViewPortPx(Pixel p)
OpenLayers.LonLat
视口坐标转换地图坐标,Pixel:OpenLayers.Pixel
getViewPortPxFromLonLat(LonLat ll)
OpenLayers.Pixel
地图坐标转换成视口坐标,LonLat:OpenLayers.LonLat
getLonLatFromPixel(Pixel p)
OpenLayers.LonLat
像素点转经纬度,Pixel:OpenLayers.Pixel
getPixelFromLonLat(LonLat ll)
OpenLayers.Pixel
经纬度转像素点,LonLat:OpenLayers.LonLat
getViewPortPxFromLayerPx(Pixel p)
OpenLayers.Pixel
层中的坐标转视口坐标,Pixel:OpenLayers.Pixel
getLayerPxFromViewPortPx(Pixel p)
OpenLayers.Pixel
视口坐标转层坐标,Pixel:OpenLayers.Pixel
getLonLatFromLayerPx(Pixel p)
OpenLayers.LonLat
层坐标转经纬度,Pixel:OpenLayers.Pixel
getLayerPxFromLonLat(LonLat ll)
OpenLayers.Pixel
经纬度转层坐标

2、class OpenLayers.Marker

OpenLayers命名空间下的Marker类可以被实例化为marker对象,用于标注地图上的位置,marker对象是由LonLat对象和Icon对象组合而成的。markers一般被添加到一个叫做OpenLayers.Layer.Markers的特殊图层中。
需要注意的是,如果你在一个marker中使用了一个icon,也就是说,你不能在其他的marker中在使用它——一旦你使用了这个icon,你应该clone()这个icon然后在另外的marker中使用这个icon。
构造函数

构造函数
描述
Marker(
  Icon icon,
  LonLat ll
)

创建一个Marker点。
Icon icon:点的图标,Icon:OpenLayers.Icon
LonLat ll:点的位置,LonLat:OpenLayers.LonLat.
如果不设置icon将给出一个默认的图标。

3、class OpenLayers.Popup

Popup类实例化一个弹出窗口,通常被添加到地图容器中。
构造函数

构造函数
描述
Popup(
  string id,
  LonLat ll,
  Size size,
  String contentHTML,
  Boolean closeBox,
  Function closeBoxCallback
)

创建一个弹出窗口。
String id:为该窗口创建一个唯一的标识符,
LonLat ll:该窗口在地图上的位置,LonLat:OpenLayers.LonLat
Size size:窗口的大小,
String contentHTML:窗口中的HTML文本信息,
Boolean closeBox:是否显示关闭按钮,
Function closeBoxCallback:点击关闭按钮时调用的回调函数

方法

方法
返回值
描述
setOpacity(float opacity)
none
设置该窗口的透明度,0.0到1.0之间
setSize(Size size)
none
设置窗口大小,Size:OpenLayers.Size
setBackgroundColor(Color color)
none
设置窗口背景颜色
setContentHTML(string content)
none
设置窗口显示内容

4、class OpenLayers.Icon

Icon为图标类,图标指定用来在地图上显示 Marker 的图像。
构造函数

构造函数
描述
Icon(
  URL img,
  Size size,
  Pixel offset,
  Function calculateOffset

创建OpenLayers.Icon对象。
URL img:图标的图片地址,
Size size:图标大小,Size:OpenLayers.Size
Pixel offset:图片地位的参考点,
Function calculateOffset:提供一个函数用于计算参考点

5、class OpenLayers.Format

各种format类的基类,它的子类实现reading/writing方法。
构造函数

构造函数
描述
initialize(options)
构造函数,把参数付给对象的属性。

属性

属性
类型
描述
options
Object
传给构造函数的一系列参数
externalProjection
OpenLayers.Projection
 
internalProjection
OpenLayers.Projection
 

方法

方法
返回值
描述
read(string data)
Depends on subclass
读取一个字符串,根据不同的子类返回不同的类型
write(object obj)
string
传入一个对象返回关于找个对象的字符串

6、OpenLayers.Request

OpenLayers.Request命名空间下包含两个常用的AJAX方法,通过这两个方法可以方便的实现XMLHttpRequests功能。
方法

方法
返回值
描述
OpenLayers.Request.GET({
 url:urlString,
 callback:funDeal
})

none
该方法发送一个HTTP GET请求。整个GET方法的参数为一个对象,urlString为请求的地址和参数,funDeal为回调函数,用于处理返回的数据。
OpenLayers.Request.POST({
 url:urlString,
 callback:funDeal,
 data:data
})

none
该方法发送一个HTTP POST请求。整个POST方法的参数为一个对象,urlString为接收数据的地址,funDeal为回调函数用于处理返回的数据;data为发送到服务器端的数据。

7、class OpenLayers.Feature

Feature是几何信息和属性的结合体,在OpenLayers.Feauter中主要是包括一个标记和经纬度。
构造函数

构造函数
描述
initialize(
 layer,
 lonlat,
 data
)

构造函数,把参数付给对象的属性。
layer:添加feature的层,
lonlat:定位该feature的经纬度,
data:其他参数

属性

属性
类型
描述
layer
OpenLayers.Layer
添加该feature的图层
lonlat
OpenLayers.Lonlat
定位该feature的经纬度
data
Objec
存放其他数据的对象
marker
OpenLayers.Marker
标记该feature的marker
popup
OpenLayers.Popup
装载该feature信息的弹出信息窗口

方法

方法
返回值
描述
onScreen ()
Boolean
该feature当前是否在屏幕的可视区域内
createMarker()
OpenLayers.Marker
为对象创建一个marker
destroyMarker()
None
销毁该对象创建的marker
createPopup ()
OpenLayers.Popup
为对象创建一个信息窗口
destroyPopup()
None
销毁该对象创建的信息窗口

 

二、BaseType命名空间:

在BaseTypes命名空间下定义了一些基本类型的类,如LonLat、Size等。

1、class OpenLayers.LonLat

LonLat是以经度和纬度表示的地理坐标点。
注意:进行地图投影时通常将经度与地图的 x 坐标联系起来,将纬度与 y 坐标联系起来。
构造函数

构造函数
描述
LonLat(float lon , float lat)
创建OpenLayers.LonLat对象,经度lon在 -180 度和 +180 度之间,而纬度lat将在 -90 度到 +90 度之间周而复始。

属性

属性
类型
描述
lon
Number:float
地图上的经度(X轴坐标)
lat
Number:float
地图上的纬度(Y轴坐标)

方法

方法
返回值
描述
toShortString()
string
返回包含lon和lat坐标的字符串,先lon坐标后lat坐标,用逗号分隔。
clone()
OpenLayers.LonLat
返回一个与当前经纬度对象有相同经纬度的新经纬度对象
add(float lon,float lat)
OpenLayers.LonLat
改变现有地图的位置,return new OpenLayers.LonLat(this.lon + lon, this.lat + lat);
equals(OpenLayers.LonLat ll)
boolean
当前经纬度对象与经纬度对象ll比较,相同返回true否则返回false

2、class OpenLayers.Pixel

Pixel是以像素坐标表示的地图上的一点。在地图坐标系统中,x坐标向右增大,y坐标向下增大。
构造函数

构造函数
描述
Pixel(int x , int y)
创建OpenLayers.Pixel对象,x、y取地图可见范围内的有效像素点距离。

属性

属性
类型
描述
x
Number:int
地图上的x轴坐标,向右增大。
y
Number:int
地图上的y轴坐标,向下增大。

方法

方法
返回值
描述
clone()
OpenLayers.Pixel
返回一个与当前像素坐标对象有相同值的像素坐标对象
equals(OpenLayers.Pixel pix)
boolean
当前像素坐标对象与像素坐标对象ll比较,相同返回true否则返回false

3、class OpenLayers.Size

Size是地图矩形区域的大小(以像素表示)。大小对象有两个参数:width 和 height。宽度是点的 x 坐标的差值,高度是 y 坐标的差值。
构造函数

构造函数
描述
Size(int width , int height)
创建OpenLayers.Size对象。

属性

属性
类型
描述
w
Number:int
地图矩形区域的宽
h
Number:int
地图矩形区域的高

方法

方法
返回值
描述
clone()
OpenLayers.Size
复制一个当前size对象
equals(OpenLayers.Size size)
boolean
当且仅当其他大小都完全相同时,则返回 true。

 

三、Control命名空间:

OpenLayers命名空间下面定义了Control基类,Control命名空间下面的所有类都继承于Control基类。每个具体的控件类实现地图的一项具体操作。控件影响地图的显示和行为,它允许拖动和放大缩小地图以控制地图的比例尺,默认的控件是被添加到地图上的,尽管如此,也可以通过传递可选参数将其加入到地图外部的DIV中。

1、class BM.Control.TMeasureDistance

TMeasureDistance为测距控件,它实现OpenLayers.Control接口,因此可用OpenLayers.map.addControl()方法添加到地图中。可能会增加控件定位的参数或方法
构造函数

构造函数
描述
TMeasureDistance()
创建MeasureDistance对象。

方法

方法
返回值
描述
getDistance ()
Number:float
返回测量的长度,当距离为100000米下时单位为米(m),否则为千米(km)
activate()
none
激活测量长度控件
interdict()
none
禁止测量长度控件

事件

事件
参数
描述
measure
传出一个事件参数e
在控件处于激活状态下,当单击鼠标时触发

2、class BM.Control.TMeasurePolygon

TMeasurePolygon为测面积控件,它实现OpenLayers.Control接口,因此可用OpenLayers.Map.addControl()方法添加到地图中。可能会增加控件定位的参数或方法
构造函数

构造函数
描述
TMeasurePolygon()
创建TMeasurePolygon对象。

方法

方法
返回值
描述
getArea() 
Number:float
返回测量的面积,当面积为100000平方米下时单位为平方米(�),否则为千米(k�)
activate()
none
激活测面积控件
interdict()
none
禁止测面积控件

事件

事件
参数
描述
measure
传出一个事件参数e
在控件处于激活状态下,当单击鼠标时触发

3、class BM.Control.TPanZoomBar

PanZoomBar为缩放移动控件,继承于OpenLayers中的PanZoomBar,主要工作为修改样式,使图标跟以前GZGIS中对应的控件一样,增加设置最大级别和最小级别的功能,它实现了OpenLayers.Control接口,因此可用OpenLayers.Map.addControl()方法添加到地图中。
构造函数

构造函数
描述
TPanZoomBar()
创建PanZoomBar控件对象。

4、class BM.Control.TOverviewMap

OverviewMap为缩略图控件(鹰眼控件),可继承于OpenLayers中的OverviewMap,主要工作为修改样式,由于OpenLayers.OverviewMap实现了OpenLayers.Control接口,因此可用OpenLayers.Map.addControl()方法添加到地图中。
构造函数

构造函数
描述
OverviewMap()
创建OverviewMap控件对象。

属性

属性
类型
描述
size
OpenLayers.Size
缩略图控件的像素大小。
layers
Array(OpenLayers.Layer)
各层的缩略图控件列表,如果不设置,则只显示首层的地图缩略图

5、class BM.Control.TNavigation

TNavigation为导航控件,该控件将分类导航,一个导航控件中包含一到多个TNavPage实例。该控件实现了OpenLayers.Control接口,可由OpenLayers.Map.addControl()方法加载到地图中。
构造函数

构造函数
描述
TNavigation(TNavPage [])
根据分类页实例数组创建TNavigation控件对象。

方法

方法
返回值
描述
setPosition(Pixel p)
none
设置控件显示位置,Pixel:OpenLayers.Pixel
show()
none
显示该控件
hide()
none
隐藏该控件
switchType(string TNavPage_id)
none
根据导航分类页id切换导航类别:比如“政府类”,“酒店类”
AddNavPage (TNavPage [])
none
添加分类页数组到导航控件里

6、class BM.Control.TGoto

TGoto为定位控件,根据用户输入的经纬度定位地图。
//调用事例
    //1、不设置标题
    //map.addControl(new BM.Control.TGoTo());
    //2、设置标题
    //var gotoControl = new BM.Control.TGoTo();
    //gotoControl.setTitle(“标题”);
    //map.addControl(gotoControl);
构造函数

构造函数
描述
TGoto()
创建TGotoControl对象。

方法

方法
返回值
描述
setTitle(string str)
none
给定位窗口设置标题,默认为”请输入经纬度:”

7、class BM.Control.TDivTree

TDivTree为复选框树行控件,被添加到DOM元素中,无需实现OpenLayers.Control接口,与地图无关。
构造函数

构造函数
描述
TDivTree(string treeData)
构造函数,通过str创建一个复选框树对象 。
String treeData:包含了生成一棵树的相关数据信息。

方法

方法
返回值
描述
init(function fun)
none
将回调函数传给这个棵树,使树能根据回调函数能产生不同的响应效果。fun(node),回调函数会传入一个当前复选框被点击的对象。
getAllNodes()
TTreeNode  []
根据树的前序遍历获取整棵树的节点数组,包括根

8、class BM.Control.TTree

TTree为复选框树的数据结构,可以获得数组形式的所有节点和树形式的所有节点,可以获得包含自己的树对象。不需用户进行实例化,TDivTree自动调用。

9、class BM.Control.TTreeNode

TTreeNode为复选框节点类。
构造函数

构造函数
描述
TTreeNode(string name)
构造函数,创建复选框节点对象。
String name:节点名称

属性

属性
类型
描述
parent
TTreeNode
当前节点的父节点
previous
TTreeNode
当前节点的前一个节点(兄弟)
next
TTreeNode
当前节点的下一个节点(兄弟)
child[]
TTreeNode []
当前节点的子节点数组
level
Number:int
当前节点的级别,根节点root为0
tree
TTree
节点数组对象
checked
Number:int
节点复选框状态,0不中;1选中;2部分选中
img
Url
当前节点的用户自定义图标

方法

方法
返回值
描述
delete(TTreeNode node)
none
删除当前节点的子节点node
add(TTreeNode node)
none
为该节点添加子节点node

 

四、Feature命名空间:

特征元素是几何信息(geometry)和地理信息(attribute)的结合体,从类结构来看它实际上是marke类和lonlat类的组合。

1、class OpenLayers.Feature.Vector

Vector类使用OpenLayers.Geometry类描述其几何特征,它有一个数据对象的attributes属性,和一个style属性,默认的style属性在<OpenLayres.Feature.Vector.style>中定义。
构造函数

构造函数
描述
initialize(
OpenLayers.Geometry geometry,
Object attributes,
Object style
)

构造函数,用于创建一个矢量地理特征元素。
geometry:feature的几何信息,
attributes:几何信息的地理属性,
style:几何信息的显示样式。

属性

属性
类型
描述
fid
string
矢量地理特征元素的标识
geometry
OpenLayers.Geometry
该矢量地理特征元素的几何信息
attributes
Object
相关属性,用于描述该地理特征元素
state
string
当前矢量地理特征元素的状态,如INSERT,UPDATE,DELETE
style
Object
该矢量地理特征元素显示的样式

方法

方法
返回值
描述
destroy()
none
销毁该类创建的对象对象etate()kerE,etry
clone()
OpenLayers.Feature.Vector
返回该对象的副本
onScreen(boolean b)
boolean
当前矢量地理特征元素是否在地图可视窗口内
move(location)
None
将当前对象移动到新的位置并重绘
toState(state)
None
为当前对象设置新的状态

 

五、Format命名空间:

Format命名空间下定义了一系列的解析器用于将特征元素格式化为具体格式的标准数据,然后利用格式化后的标准数据与采用此标准实现的服务器端交互。例如,WFS请求过程中,客户端和服务器端统一采用GML格式的数据进行交互,所以客户端用Format命名空间下的GML类将具体的特征元素格式化为GML数据发送到服务器端或将服务器端传送过来的GML数据解析为特征元素显示在地图上。Format命名空间下的类都继承了format基类,重写了它的read/write方法。

1、class OpenLayers.Format.XML

解析XML数据的类,继承于OpenLayers.Format类。参考openlayers/XML example.htm例子。
构造函数

构造函数
描述
initialize(options)
构造函数,把参数付给对象的属性。根据浏览器构造一个XML对象赋给xmldom

属性

属性
类型
描述
namespaces
Object
XML命名空间对照表,hash表的方式存在:alias:URI
namespaceAlias
Object
XML命名空间对照表,hash表的方式存在:URI:alias
defaultPrefix
String
构造节点时的默认别名
xmldom
XMLDom
XMLDom对象

方法

方法
返回值
描述
setNamespace(string alias,string uri)
none
设置命名空间的alias和URI
read(string text)
DOMElement
读取一个XML字符串返回该XML对应的DOM节点对象
write(DOM node)
string
根据传入的dom节点返回该节点的xml字符串信息
createElementNS(string uri,string name)
DOMElement
根据参数创建一个DOM节点,name包含prefix
createElementNS(“www.ygg.cn”,”ygg:persons”)

createTextNode(string text)
DOMElement
根据参数创建一个文本节点。效果和dom.text = text一样
getElementsByTagNameNS(
Element node,
String uri,
name)

NodeList
在node节点下根据参数查询符合条件的子节点。
uri:命名空间URI;
name:标签名,不含prefix
getElementsByTagNameNS(element,”www.students.cn”,”students”)

getAttributeNS(
Element node,
String uri,
String name)

String
在node节点中根据参数查询属性名为name的值。
uri:命名空间URI;
name:标签名,不含prefix
getAttributeNS(nodeList[0],”www.students.cn”,”authorAge”);

getAttributeNodeNS(
Element node,
String uri,
String name)

DOMElement
在node节点中根据参数查询符合条件的子节点。
uri:命名空间URI;
name:属性名;
getAttributeNodeNS(element,”www.ygg.cn”,”author”)

hasAttributeNS(
Element node,
String uri,
String name)

boolean
判断node节点中是否有name属性。
uri:命名空间URI;
name:属性名;
hasAttributeNS(nodeList[0],”www.students.cn”,”authorAge”);

setAttributes(
Element node,
Object obj)

none
根据obj里面的键值对,设置node节点的属性。
obj:包含键值对的属性和值;
setAttributes(sunNode,{“authorAge”:”24″});

setAttributeNS(
Element node,
String uri,
String name,
String value)

string
根据参数设置node节点的属性,该方法设置的属性才能使用getAttributeNodeNS获取节点,用getAttributeNS获取属性。
uri:命名空间URI;
name:属性名;
value:属性值;
setAttributeNS(sunNode,”www.students.cn”,”authorAge”,”24″);

 

六、Geometry命名空间:

Geometry是对地理学对象的描述,此命名空间下的类都继承了OpenLayers命名空间下的Geometry基类,具体子类描述了各种具体的地理学对象,例如Point、Line、Polygon分别描述了能用点、线、面指代的具体地理学对象。

1、class OpenLayers.Geometry

所有具体geometry对象的基类,Geometry命名空间下面的所有类都直接或间接的继承了Geometry类,所有具体能够实例化的类定义了所有geometry对象都应该有的属性和方法。
属性

属性
类型
描述
id
String
当前对象的唯一标识
parent
OpenLayers.Geometry
把当前对象当做自己的一部分的另一个geometry对象
bounds
OpenLayers.Bounds
当前对象的边界范围

方法

方法
返回值
描述
clone()
OpenLayers.Geometry
返回当前对象的一个副本
clearBounds()
none
将当前对象和其parent的bounds设置为null
getBounds()
OpenLayers.Bounds
返回bounds属性
atPoint(lonlat,toleranceLon,toleranceLat)
Boolean
判断当前对象的bounds是否在lonlat点上,后面两个参数是允许的偏差。
getLength()
Float
返回当前对象的长度
getArea()
Float
返回当前对象的面积
toString()
String
返回当前对象的对象的相关信息。

2、class OpenLayers.Geometry.Rectangle

矩形几何对象,继承于Geometry基类。(暂不支持)
构造函数

构造函数
描述
initialize(x,y,width,height)
根据右下角点(x,y)和长宽创佳矩形几何对象

属性

属性
类型
描述
x
Float
矩形对象右下角x
y
Float
矩形对象右下角y
width
Float
矩形的宽
height
Float
矩形的长

方法

方法
返回值
描述
calculateBounds()
None
计算当前对象的边界
getLenght()
Float
获取当前对象的边界长
getArea()
float
获取当前对象的面积

3、class OpenLayers.Geometry.Point

点的几何对象,继承于Geometry基类。
构造函数

构造函数
描述
initialize(x,y)
根据经纬度的lon,lat创建点几何对象

属性

属性
类型
描述
x
Float
点几何对象的经度
y
Float
点几何对象的纬度

方法

方法
返回值
描述
clone()
OpenLayers.Geometry.Point
返回当前对象的一个副本
calculateBounds()
none
计算当前对象的边界
distanceTo(point)
float
当前对象到point的距离
equals(geom)
boolean
比较当前对象与geom是否相等,
toShortString()
string
根据参数创建一个文本节点。效果和dom.text = text一样
rotate(angle,origin)
none
返回当前对象的经纬度信息
resize(scale,origin,ratio)
none
根据原点和比例尺重置当前对象的大小
intersects(geometry)
boolean
判断当前对象是否与geometry对象相交

4、class OpenLayers.Geometry.Collection

该集合类继承了Geometry类。OpenLayers中的多点、多线线、、面、多面其实是点的集合,继承了该集合类,使其既继承了Geometry的属性和方法,又具备了Collection类的属性和方法。
集合,顾名思义就是一系列Geometry对象的集合,这些Geometry对象存储在集合对象的components属性中,components属性可以作为参数传递给集合的构造函数。当新的Geometry对象被加入到集合中时并不是加入它的副本。当从集合中移除Geometry对象需要该集合对象的引用。
集合对象中的getArea()方法和getLength()方法只不过是对集合对象中的所有Geometry对象各自的距离和面积求和。
构造函数

构造函数
描述
initialize(components)
Collection类的构造函数,传如几何对象数组

属性

属性
类型
描述
components
OpenLayers.Geomerty(Array)
几何对象数组,集合对象的组成部分
componentTypes
String(Array)
几何对象数组中对象的类型

方法

方法
返回值
描述
destroy()
none
Collection类的析构函数
clone()
OpenLayers.Geometry.Collection
当前对象到point的距离
getComponentsString()
string
返回collection对象的components信息
calculateBounds()
none
计算该集合对象的界限并最终赋给geometry对象的bounds属性
addComponents(components)
none
添加components数组中的geometry对象到components属性中。
addComponent(component,index)
boolean
添加component到指定的index位置
removeComponents(components)
None
移除components数组中的geometry对象
removeComponent(component)
None
移除component对象
getLength()
float
获取长度
getArea()
Float
获取面积
move(x,y)
None
移动到x,y位置
rotate(angle,origin)
none
根据原点转动,angle转动角度,origin原点
resize(scale,origin,ratio)
None
根据原点和比例尺重置当前对象的大小
tansform(source,dest)
OpenLayers.Geometry
根据投影重新构建components中的各对象
equals(geometry)
Boolan
比较当前对象与geometry是否相等
intersects(geometry)
boolean
判断当前对象是否与geometry对象相交

5、class OpenLayers.Geometry.MultiPoint

多点是点的集合对象,MultiPoint继承于Collection类。下面的属性和方法只列出重写的部分,其他的请参考父类。
构造函数

构造函数
描述
initialize(components)
MultiPoint类的构造函数,传如点对象数组

属性

属性
类型
描述
componentTypes
String(Array)
几何对象数组中对象的类型(OpenLayers.Geometry.MultiPoint)

方法

方法
返回值
描述
addPoint(point,index)
none
加入point到MultiPoint对象中的指定位置,index参数可选
removePoint(point)
none
从MultiPoint对象中移除point

6、class OpenLayers.Geometry.Curve

Curve(曲线)类继承于MultiPoint类,它的点被看做是连接的,提供的getLength()方法是相连两点间的距离的累加。
构造函数

构造函数
描述
initialize(points)
MultiPoint类的构造函数,传如点对象数组

属性

属性
类型
描述
componentTypes
String(Array)
几何对象数组中对象的类型(OpenLayers.Geometry.MultiPoint)

方法

方法
返回值
描述
getLength()
Float
获取长度

7、class OpenLayers.Geometry.LineString

线类继承于曲线类,一旦添加了两个点,就不能再少于两个点。(线至少有两个点)
构造函数

构造函数
描述
initialize(points)
LineString类的构造函数,传如点对象数组

方法

方法
返回值
描述
removeComponent(point)
none
移除点,仅当点在2个以上时才允许移除
intersects()
Boolean
判断当前对象是否与geometry对象相交
getSortedSegment()
Array
返回当前线对象中的最大、最小经纬度

8、class OpenLayers.Geometry.LinearRing

LinearRing是特殊的LineString,它是闭合的,当加入一个新的点的时候它会自动的闭合,不用你去与第一个点连接。LinearRing继承于LineString。
构造函数

构造函数
描述
initialize(points)
Polygon类的构造函数,传如线对象数组

属性

属性
类型
描述
componentTypes
String(Array)
几何对象数组中对象的类型(OpenLayers.Geometry.Point)

方法

方法
返回值
描述
addComponent(point,index)
Boolean
在指定位置加入点,返回是否加入成功
removeComponent(point)
None
从闭合线圈中移除点
move(x,y)
None
将闭合线圈移动到x,y
rotate(angle,origin)
None
根据角度和原点旋转
resize(scale,origin,ratio)
None
根据原点和比例尺重置大小
transform(source,dest)
OpenLayers.Geometry
根据当前和目标投影重置当前对象
getArea()
Float
返回当前对象的面积
containsPoint(point)
Boolean
测试参数点是否在当前闭合线圈里面
intersects(geometry)
Boolean
判断当前对象是否与geometry对象相交

 

9、class OpenLayers.Geometry.Polygon

Polygon类继承于Collection类,面是LinearRings的结合。
构造函数

构造函数
描述
initialize(components)
Polygon类的构造函数,传如线对象数组

属性

属性
类型
描述
componentTypes
String(Array)
几何对象数组中对象的类型(OpenLayers.Geometry.LinearRing)

方法

方法
返回值
描述
getArea()
Float
返回当前对象的面积
containsPoint(point)
Boolean
判断参数点是否在当前对象内
intersects(geometry)
Boolean
判断当前对象是否与geometry对象相交
getLength()
Float
获取长度

10、class OpenLayers.Geometry.MultiLineString

多线是一系列的LineString的组合,继承于Collection类。
构造函数

构造函数
描述
initialize(components)
Polygon类的构造函数,传如线对象数组

属性

属性
类型
描述
componentTypes
String(Array)
几何对象数组中对象的类型(OpenLayers.Geometry.LinearRing)

11、class OpenLayers.Geometry.MultiPolygon

MultiPolygon是由多个的Polygon组合而成,该类继承于Collection类。
构造函数

构造函数
描述
initialize(components)
MultiPolygon类的构造函数,传如线对象数组

属性

属性
类型
描述
componentTypes
String(Array)
几何对象数组中对象的类型(OpenLayers.Geometry.Polygon)

 

七、Handler命名空间:

在Handler命名空间下定义了一些事件处理程序,OpenLayers命名空间下的Handler类是基类,构造了一个高级别的处理一系列事件的处理程序。所有的事件处理程序都有activate和deactivate方法。另外,它们还包括了一些类似浏览器事件的方法。当事件处理程序被activate后,一些另外的类似浏览器事件的方法将被registered到监听器,执行统一的事件处理。当事件处理程序被deactivate后,那些被注册的事件都将被unregistered。
事件处理程序在控件中创建,控件最终负责改变应用程序的状态。事件处理程序可能会做临时的改变,但是一般而言,事件处理程序可以恢复应用程序之前的状态。

1、class OpenLayers.Handler

所有Handler命名空间下的类的基类,它本身并不实现什么功能。
构造函数

构造函数
描述
initialize(components)
Polygon类的构造函数,传如线对象数组

属性

属性
类型
描述
id
String
事件处理程序标识
control
OpenLayers.Control
事件处理程序绑定的控件
map
OpenLayers.Map
事件处理程序对应的地图
keyMask
Integer
键盘按键对应的值
active
Boolean
是否激活该事件处理程序,默认为false
evt
Event
首先这不是一个稳定的API参数,evt是事件处理程序的最后一个引用

方法

方法
返回值
描述
setMap(map)
none
设置地图属性
checkModifiers(evt)
Boolean
检查keyMask的处理程序,如果keyMask没有设置那么总是返回true,如果keyMask是和它匹配的的组合键的事件,则返回true
activate()
Boolean
开启事件处理程序,如果事件处理程序已经开启返回false
deactivate()
Boolean
关闭事件处理程序,如果事件处理程序已经关闭返回false
callback(name,args)
none
触发特定名字和参数的回调函数
register(name,method)
None
注册事件到地图上
unregister(name,method)
None
从地图上注销事件
setEvent(evt)
None
为evt属性设置浏览器事件
destroy()
none
该对象的析构函数

 

八、Layer命名空间:

在Layer命名空间下定义了所有的图层类,OpenLayers命名空间下的Layer类是基类,Layer命空间下的所有类都继承了Layer基类,并且都要添加到地图类中才能显示在地图容器中。图层类中的图层可以通过与服务器端交互得到数据然后生成图层,或者读具体格式的数据文件得到图层等。
 

九、Popup命名空间:

OpenLayers命名空间下的Popup类可以被实例化,实例化后的popup是一个简单的方框信息窗口,没有什么样式效果,Popup命名空间下的类都直接或间接的继承于该类,继承后的类是具有样式效果的信息窗口,其用法都大致相同。一个popup是一个能够开启和关闭并且可以添加到地图上的小div。有代表性的使用是,当点击一个marker后将打开这个popup,popup不需要属于它自己的图层,它可以使用<OpenLayers.Map.addPopup>方法添加到地图中使用。
 

十、Request命名空间:

OpenLayers命名空间下的Request类封装了Ajax请求,Request文件夹下封装了一个会自动运行的函数,该函数在调用OpenLayers框架的时候会根据浏览器自动运行并实例化一个XMLHttpRequest对象。
 

十一、Util命名空间:

Util命名空间定义了一系列的工具函数,这些函数会在OpenLayers框架中经常被调用。

转载请注明出处。GIS帝国网站报道中出现的商标及图像版权属于其合法持有人,只供传递信息之用,非商务用途。

You may also like...

发表评论

您的电子邮箱地址不会被公开。

CAPTCHAis initialing...