openlayers quick use

20
OpenLayers

Upload: thoughtworks

Post on 22-Jun-2015

599 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: openlayers quick use

OpenLayers

Page 2: openlayers quick use

• OpenLayers, is an open source, client side JavaScript web mapping library.

1.1 what is openlayers?

Page 3: openlayers quick use

像 Google , Yahoo , Bing ,百度,高德等都允许我们连接它们的地图服务,同时也都提供 client side 的接口,但是这些商业地图服务提供商,存在的问题是:• 无法定制化( map client side , map server backend )• 商业限制,使用成本• 一些专业化的地图操作不满足,例如:

– http://openlayers.org/dev/examples/editingtoolbar.html– http://openlayers.org/dev/examples/drag-feature.html– http://openlayers.org/dev/examples/modify-feature-bysegment.html– intersetc(),distanceto()

1.2 why is openlayers?

Page 4: openlayers quick use

2.1 (first.html)

Page 5: openlayers quick use

2.2 debug in console panel

Page 6: openlayers quick use

2.3 坐标系

GIS领域,坐标系通过“ EPSG”码来确定。通常使用的“ EPSG:4326”坐标系通过经纬度 X/Y来描绘地图,而球面墨卡托坐标系采用“ EPSG:900913”(实际官方定义为 EPSG:3857,但是事实标准为 900913),他是通过米 x/y来描绘地图。

Spherical Mercator 球面墨卡托坐标系,一种被多数商业 GIS产品如Google Map, Microsoft Virtual Earch, Yahoo Map等采用的坐标系。球面墨卡托坐标系将地球看成是一个球体,而不是一个椭圆。为了准确地叠加数据到这些商业 GIS厂商提供的地图上,就必须采用这个坐标系。这个投影基于地球的形状是球体模型的前提提供了以米测量的地球数据。

http://openlayers.org/dev/examples/vector-formats.html

Page 7: openlayers quick use

3.1 LayerLayer 是 OpenLayers 地图应用中最基础的组成部分,我们使用到的所有地图,标记,矢量图形等都是建立在 Layer 之上的。

Page 8: openlayers quick use

3.1 Layer从类型上,在 OpenLayers 的 map 应用中,至少有一个 Base Layer(通常为加载地图的 Layer ,但是地图 Layer 也可以有很多个),其他层在它之上,称为 Overlay Layers。

从接口文档可以看到,基类( OpenLayers.Layer )以及非常多的子类,例如:• OpenLayers.Layer.WMS :连接 WMS map server 使用的 layer• OpenLayers.Layer.Google :连接 Google Maps 时使用• OpenLayers.Layer.Vector :后面重点介绍• OpenLayers.Layer.TileCache :提供与支持 Tile 缓存 Server 交

互• ...

Page 9: openlayers quick use

4.1 ControlControl 提供了我们与地图交互的工具,从接口文档可以看到它的子类里包括很多经常在地图上操作工具,例如: Zoom, Pan, Overview (鹰眼), Editoring Panle( 画图 )...

Page 10: openlayers quick use

4.2 controls.html

Page 11: openlayers quick use

5.1 vector.html

Page 12: openlayers quick use

5.2 Vector Layer通常 OpenLayers 的 Vector 类是用来在地图上显示和实时数据交互的,我们可以从地理文件,如 KML , GeoJSON 文件中获取数据。GIS 中,图形文件分为栅格和矢量两种类型。较之静态的栅格图像,它可以显示物体几何形状,同时可以携带各种数据信息,并且支持无极缩放。

默认情况下 , OpenLayers 是通过 svg,vml,canvas 格式来渲染矢量图层的。所以在 console panel 中我们可以看到 svg 标签。

Page 13: openlayers quick use

5.3 FeatureOpenLayers 在矢量图层上加载几何对象是通过 Feature 类来完成的。

Page 14: openlayers quick use

5.4 GeometryGeometry 类是用来存储几何信息的。和 Layer 类一样,通常我们只是和它的子类打交道,例如: Point , LinearRing , Polygon, Collection 。

Page 15: openlayers quick use

5.5 event.html

Page 16: openlayers quick use

6.1 geojson.html

Page 17: openlayers quick use

6.1 Format, protocol and strategy

Protocol 类用来控制矢量图层如何和数据源进行交互,通常使用有两种类型: Protocol.HTTP 和 Protocol.WFS 。

Page 18: openlayers quick use

6.2 Format, protocol and strategy

Format 类用来决定输入或输出到什么格式类型的数据,我们可以用来读入例如 KML , GeoJSON 格式的文件,也可以将 feature 对象以这些类型反向输出。换句话说, Format 用来控制 feature 数据的序列化和反序列化。

Page 19: openlayers quick use

6.3 Format, protocol and strategy

Strategy 类用来控制请求发送和响应处理的方式,它的子类有:• Strategy.Fixed: 最简单的一种策略, feature 数据只请求一次。• Strategy.BBOX: 一种在 Protocol.WFS 协议下,用来仅获取当前地

图的可视范围内数据的策略。• Strategy.Cluster: 一种 feature 组合策略。• Strategy.Grid: 一种还处于 sandbox ,未正式 release 的策略,用

来获取矢量切片的策略。

Page 20: openlayers quick use

7.1 矢量切片 http://www.openlayers.cn/portal.php?mod=view&aid=33http://www.openlayers.cn/forum.php?mod=viewthread&tid=141http://blog.perrygeo.net/2012/02/24/utfgrids-with-openlayers-and-tilestache/