开源

WebGIS客户端的JavaScript库:OpenLayers

字号+ 作者:GIS帝国 来源:GIS帝国 2015-11-14 17:16 我要评论( )

OpenLayers是一个用于开发WebGIS客户端的JavaScript包。OpenLayers实现访问地理空间数据的方法都符合行业标准。比如 OpenGIS的WMS(Web Mapping Service)和WFS(We

  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帝国网站报道中出现的商标及图像版权属于其合法持有人,只供传递信息之用,非商务用途。

1.GIS帝国遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
网友点评