openlayers技术开发文档
OpenLayers 类分析(一)

1.4、OpenLayer.Map 中的事件处理器 events
在 OpenLayer.Map 类初始化时,Map.events 被直接创建了一个事件管理类 OpenLayer.Events,并和 id 为“map”的 div 完成绑定。由 handleBrowserEvent 函数接收 map 上的消息,并发给 listener 队列来处理。
Handler -callbacks 1 +register() +unregister() +activate() +deactivate() +callback()
Handler.Click
在 Control.Click 的 initialize 中,创建了用于事件处理的 Handler.Click 类,并准备好回调函数 callbacks。 在 Control 调用 activate()函数时,Handler.Click 完成和 div 的消息绑定。当收到消息后, 先由 Handler.Click 处理,再传给回调函数 callbacks 。在 callbacks 中完 成消息显示功能。
监听函数 Function(feature) Function(feature)
允许框选 feature 限制选择 feature 的开关
说明 选择 feature 时触发 取消选择 feature 时触发
Handle
OpenLayers.Handler
指定绘制的图形的类型,如:
OpenLayers.Handler.Point
/path/polygon 等.
Options:
内容见下表
Options:
属性: Properties multi
openlayers开发

giswuyuanjie关于shapefile人们常说的Shapefile是一种美国ESRI公司开发的空间数据开放格式。
目前,许多空间数据都以此格式进行存储、管理、共享,这证明了shape格式的实用性,也侧面证明了ESRI公司的实力和影响力。
Shapefile格式保存了图形的矢量信息和其属性信息,一般由以下几个文件组成:* .shp - 存储空间几何对象。
* .shx - 存储空间几何对象在*.shp文件中偏移索引。
* .dbf -存储空间几何对象的属性信息。
除了以上三个文件格式之外,还可以有其它文件的支持,这样能够优化访问数据库的性能:* .sbn 和.sbx - 空间几何对象空间索引。
* .fbn 和.fbx - 存储只读空间几何对象空间索引。
* .ain 和.aih - 存储列表中活动字段的属性索引。
* .prj - 保存空间参考信息。
* .shp.xml - 保存的元数据。
关于*.shp、*.shx、*dbf文件的读取,可以去网站/下载源代码进行研究。
shapefile文件格式的白皮书可以去网站/dl/shapelib/shapefile.pdf下载但是,如果想加快读写速度需要注意以下几点:1、利用SHPObject对象时,每次都对Z、M值进行了分配空间,开发人员可以自己修改shapelib库源代码,在没有M、Z值情况下不分配内存空间;2、开发者重写函数一个读取函数:SHPReadObject( SHPHandle hSHP, int iShape, SHPObject ** obj),obj对象不必每次读取都重新重复分配内存,只有在上一个对象占用的内存空间小于此次读取对象时再重新分配空间;3、修改SHPObject结构,将顶点坐标的x、y值交互存放,和物理存储位置一致,例如:x1 y1 x2 y2 x3 y3...4、利用quadtree进行空间搜索,加快空间数据搜索速度;5、完全重新设计sHPObject结构,使其与自己系统的空间数据对象一致,再重新开发shapeobject读写函数,自己从文件中解析数据,直接形成自己的内存数据结构去分析、绘制等工作,而不是利用ShpObject进行中转;6、注意shapefile格式中的Polygon,是拥有对个环的Polygon,环间可以嵌套形成洞、岛等现象,虽然ESRI规定,换走向的右侧为Polygon 内部,但很多时候shapefile的存储并未遵守这一规则,而且环的存储顺序也很混乱,即:内环不一定紧随其外环存储,在读取中特别注意。
OpenLayers体系结构

OpenLayers体系结构由于OpenLayers是采用JavaScript实现的,不存在包的概念,但是它可以通过命名空间来实现类似包的功能。
另外,JavaScript不存在继承的感念,也不存在私有、公有、保护等概念,OpenLayers中所谓的继承其实就是将基类中的的命名空间如下:所有属性和方法复制到子类中去。
OpenLayers的命名空间如下:一、OpenLayers命名空间:构造函数构造函数构造函数描述描述 Map (string divId, Object options )创建地图容器对象。
创建地图容器对象。
string divId :页面的div 元素ID , Object options :地图容器的相关属性。
:地图容器的相关属性。
属性属性属性类型类型 描述描述 events OpenLayers.Events 地图上能响应的事件集合地图上能响应的事件集合 layers yer 地图上的图层集合地图上的图层集合 方法方法方法返回值返回值 描述描述 getTileSize() OpenLayers.Si ze 返回瓦片尺寸返回瓦片尺寸 addLayer(Layer layer) none 向地图容器中添加层,Layer :yer addLayers(Layer []) none 向地图容器中批量增加层,Layer :yer removeLayer( Layer layer, Boolean setNewBaseLayer ) none 移除层。
移除层。
Layer:yer,删除的层。
如果setNewBaseLayer 为true 从新设置新的baseLayer ,默认为true setBaseLayer(Layer layer) none 设置新的baseLayer,隐藏原来的baseLayer,Layer:yer addControl(Control c) none 向地图容器中添加控件,Control:OpenLayers.Control removeControl(Control c) none 从地图容器中移除控件,Control:OpenLayers.Control addPopup( Popup pp, Boolean closeOther none 新增弹出窗口。
openlayer开发完全解读

看好多人都写OpenL ayers的一些说明,但总感觉没有具体事例解释,不太爽。
抽点时间从Op enLay ers官方网站上找些例子具体解释一下Ma p、Vec tor、F eatur e类的简单用法。
有些东西是自己工作经验的理解,没完全按英文解释来理解,希望不会对大家造成误解。
工作太忙,以后又时间和精力就不断地解释点,目前有100多个例子呢。
以下程序拷到本机应该就能直接应用,我是在Geos erver中运转地。
<ht ml xm lns="http://www.w3.o rg/1999/xh tml"><head><titl e>创建不同的Fea ture类实例————在电子地图上绘制Feat ure对象实例的方式有两种,一种是使用默认方式(但在相应的C SS表中也可以更换图片),另一种是自己做图片,并根据用户选择来响应在电子地图上创建的不同F eatur e类实例请求</ti tle> <l ink r el="s tyles heet" href="../theme/defa ult/s tyle.css"type="text/css" /> <!--本页中的样式表--><styl e typ e="te xt/cs s"><!--显示电子地图DIV的样式控制-->#map {width: 512px;he ight: 512p x;bor der:1px s olidgray;}<!--Re diod对象的样式表,是用来判断用户请求状态的Re adio-->#cont rolTo ggleli {l ist-s tyle: none;}p {wi dth:512px;} </st yle> <!--引入O penLa yers.js文件的路径地址,就像使用P ortot ype.j s一样--><scri pt sr c="Op enLay ers.j s"></scrip t> <scr ipt t ype="text/javas cript">var m ap, d rawCo ntrol s;OpenL ayers.Util.onIm ageLo adErr orCol or ="tran spare nt";//自动加载的函数开始 fu nctio n ini t(){ map= new Open Layer s.Map('map');//必须实例化的Map对象,是电子地图成图和其它一切用户请求和服务器相应的前提。
openlayers基础概念 -回复

openlayers基础概念-回复OpenLayers基础概念OpenLayers是一个开源的JavaScript库,能够帮助开发人员在Web 地图上添加交互功能。
它是一个功能强大而且灵活的工具,可以用于创建各种地图应用程序。
本文将一步一步回答有关OpenLayers基础概念的问题。
1. OpenLayers 是什么?OpenLayers是一个开源的JavaScript库,提供一系列的API和工具,用于在Web地图上创建丰富的交互式地图应用程序。
它支持多种地图数据源,包括WMS、WMTS、GeoJSON、KML等。
由于其开源的性质,任何人都可以使用、修改和扩展OpenLayers库。
2. OpenLayers的主要特性有哪些?OpenLayers具有许多引人注目的特性,以下是其中一些主要特性:- 强大的地图渲染功能:OpenLayers可以使用多种地图数据源,包括瓦片地图、WMS、WMTS等。
它还支持自定义地图样式和符号。
- 丰富的地图交互工具:OpenLayers提供多种地图交互工具,包括缩放、平移、旋转、放大镜等。
开发人员可以根据需求自定义交互工具。
- 支持地图图层控制:OpenLayers可以创建多个图层,并对图层进行控制,包括显示/隐藏、透明度设置等。
- 强大的矢量绘制和编辑功能:OpenLayers支持在地图上进行点、线、面的绘制和编辑操作。
开发人员可以添加自定义绘制工具,并实现各种地图编辑需求。
- 支持地图样式定制:OpenLayers允许开发人员根据需求自定义地图样式,包括颜色、图标、标签等。
- 跨平台支持:OpenLayers可以在多个平台上运行,包括桌面浏览器、移动设备等。
3. 如何使用OpenLayers?要使用OpenLayers,你需要在HTML页面中引入OpenLayers库文件。
你可以从OpenLayers官方网站下载最新版本的库文件,并将其引入到你的项目中。
然后,你可以使用OpenLayers的API和工具来创建和控制地图应用程序。
OpenLayers体系结构

OpenLayers体系结构由于OpenLayers是采用JavaScript实现的,不存在包的概念,但是它可以通过命名空间来实现类似包的功能。
另外,JavaScript不存在继承的感念,也不存在私有、公有、保护等概念,OpenLayers中所谓的继承其实就是将基类中的所有属性和方法复制到子类中去。
OpenLayers的命名空间如下:一、OpenLayers命名空间:如上图所示,OpenLayers是整个webgis系统的最外层命名空间,所有的地理信息系统相关web程序都在此命名空间下,在此命名空间下又创建了其他的命名空间来管理相关功能的程序。
在这个命名空间下定义了一些基础类和基类来构建整个框架。
1、class OpenLayers.MapMap类实例化的对象为地图容器,可以向地图容器里面添加图层和控件。
构造函数属性方法2、class OpenLayers.MarkerOpenLayers命名空间下的Marker类可以被实例化为marker对象,用于标注地图上的位置,marker对象是由LonLat对象和Icon对象组合而成的。
markers一般被添加到一个叫做yer.Markers的特殊图层中。
需要注意的是,如果你在一个marker中使用了一个icon,也就是说,你不能在其他的marker中在使用它——一旦你使用了这个icon,你应该clone()这个icon然后在另外的marker中使用这个icon。
构造函数3、class OpenLayers.PopupPopup类实例化一个弹出窗口,通常被添加到地图容器中。
构造函数方法4、class OpenLayers.IconIcon为图标类,图标指定用来在地图上显示 Marker 的图像。
构造函数5、class OpenLayers.Format各种format类的基类,它的子类实现reading/writing方法。
构造函数属性方法6、OpenLayers.RequestOpenLayers.Request命名空间下包含两个常用的AJAX方法,通过这两个方法可以方便的实现XMLHttpRequests功能。
二维地图的开发设计与维护(openLayer的使用及介绍)

2.2 缩放级别总数的确定方法:
a. 直接指定numZoomLevels,例如: numZoomLevels: 5 b. 由最大分辨率和最小分辨率的比值确定,最小 分辨率同2.1有三种方法可以确定:
b.1 直接指定minResolution b.2 直接指定maxScale b.3 由minExtent确定(minResolution需设置为
OpenLayers的操作
OpenLayers 除了可以在浏览器中帮助开发者实现地 图浏览的基本效果,比如放大(Zoom In)、缩小 (Zoom Out)、平移(Pan)等常用操作之外,还 可以进行选取面、选取线、要素选择、图层叠加等 不同的操作,甚至可以对已有的OpenLayers 操作和 数据支持类型进行扩充,为其赋予更多的功能。同 时,在OpenLayers提供的类库当中,它还使用了类 库Prototype.js 和Rico 中的部分组件,为地图浏览
其中的网址为地图服务的路径参数。(若要使用自己的地图 服务或本地图片资源,则需要自己构造或重写一个 yer的子类,并对其中的getUrl方法按既定规则 进行重写) 一个map对象可以添加多个layer对象,若希望添加多个layer 对象(如:laers(),也可以以数组方式添加。
OpenLayers JavaScript Mapping Library
瓦片数据的url OpenLayers所能够利用的地图数据资源“丰富多彩”,在 这方面提供给拥护较多的选择,比如WMS、WFS、 GoogleMap、KaMap、MS VirtualEarth、WorldWind等等。 当然,也可以用简单的图片作为源。
二维地图的开发设计与维护
OpenLayers简介
OpenLayers是由MetaCarta公司开发的,用于 WebGIS客户端的JavaScript包。
【转】OpenLayers

【转】OpenLayersOpenLayers:OpenLayers是一个开源的js框架,用于在您的浏览器中实现地图浏览的效果和基本的zoom,pan等功能。
OpenLayers支持的地图来源包括了WMS,GoogleMap,KaMap,MSVirtualEarth等等,您也可以用简单的图片作为源,在这一方面OPenLayers提供了非常多的选择。
WMS服务:1 OGC组织及其开放性规范为了实现异构的地理空间信息及GIS处理功能的互操作的集成,OGC(Open GIS Consortium)一直致力于寻求一种方式,将地理信息系统技术、分布处理技术、面向对象技术、数据库设计以及实时信息处理方法有效地结合起来,实现分布式异构平台上GIS互操作[2]。
OGC制定了开放地理信息互操作规范(OGIS),试图通过共同的开放地理数据模型(OGM)和OGIS参考模型(ORM)来实现互操作。
其目的是希望提出一个可扩展的、基于各种标准的、能无缝集成各种在线空间处理和位置服务的框架,使得分布式空间处理系统能通过XML和HTTP技术进行交互,并为各种在线空间数据资源,来自传感器的信息、空间处理服务和位置服务和基于Web的发现、访问、整合、分析、利用和可视化提供互操作框架[3]。
OGC的中心主题是共享信息和提供服务,在OGC的抽象规范中共有17个主题,其中主题12是开放式Web Services空间信息服务框架[4,5],它包含一系列的抽象规范和实现规范。
概括地来讲,OGC OpenGIS Web Services(OWS)包括三个主要的地理信息服务即Web Map Service(WMS)、Web Feature Service(WFS)和Web Coverage Service(WCS)。
除此之外,还包括Simple Feature Specillcation(SFS),Geography Markup Language(GML)等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何多个矢量图利用数据库查询数据的方式展示Geoserver单个图层发布
基于菜鸟的教程,高手勿喷,
新建Workspaces【工作空间,决定了你调用自己数据库访问地图数据的URL】
例如:
Namespace URI 就是决定你下一步调用的地图的URL.
Default workspace 是否设置为默认的工作空间
新建Stores【资源库】这个东西,决定了你访问的方式,
例如连接oracle数据的
这个geoserver 本身是没有附带到本身的lib内,
下载的地址可以在谷歌搜索【gt-jdbc-oracle】不建议使用百度搜索【记住版本要对应,需自查】
这是谷歌搜索的结果
此处介绍下Stores的链接参数
新建Layers【你访问资源库里面那个资源】
上面的Declared SRS 因为我的地图格式是EPSG:2002,所以采用的是2010,采用EPSG:4326,
导致我附加的样式,不能显示,希望各位引以为戒,导入数据库图的时候,先看看SRS标准是什么。
下面是访问后的地图
默认的应该是黑色线条
单个的就介绍到这里,网上很多例子,也可以找我私聊,群号154260284
Gerserver 单个图层组的发布
基于上面的,前面的两个步骤,我就不解释了,为什么要写下面的例子呢,是因为多个图层访问,会导致JVM虚拟内存过大,我一次使用了13个地图,叠加显示,JVM死掉,
所以采用下面的方法。
为什么使用这个,因为这个效率高,浏览的效果也好。
如下图所示:
全省GIS地图
塔杆,微气象数据展示。
那个微气象是动态的哦,不是静态的,很漂亮,可惜静态图看不出效果
下面的火灾是我随便定义的,坐标系,火灾里面的火也是动态图片哦。
至于朋友们做到东西,为什么不能展示gif图片,我告诉你,因为你的openlayers版本太低了,
至于朋友们,觉得这样也是很慢,没关系,我告诉你问什么,因为我们还没讲到地图的缓存也就是切片。