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