接上一回,正式开始ol的源码学习之旅。这篇文章记录学习ol的辅助工具和基础类和模块的源码。
Openlayers 的基本模块
工具类主要是方便开发地图模块的一些通用操作和通用的方法。进入源码工程的 src/ol 文件目录中可以看到命名语义化的一些js文件,里面包括了一些工具类和模块。 可以看到,目录中小写命名的js文件基本上的导出的module,常量和函数
根据里面的用途,画了一个脑图:
以上的这些都是Openlayers的一些常用的函数,在各个类当中广泛应用
Openlayers 最基础的类
使用过Openlayers 大家会发现,常用的类诸如 Map, View, Control, Layer等都会有 on, un方法。从继承链溯源回去,可以看到on,un方法的实现是在Observable.js中的 Observable类实现,而Observable类继承至Target。Target事件目标类简单实现了W3C DOM Level 2 EventTarget接口。Target类实现了常用的注册事件侦听器,移除事件侦听器,事件派发的方法。
为啥要这么设计,个人猜测地图上的交互是比较多的,类似事件处理和驱动的需求比比皆是,基于事件驱动编程模式是比较合适的方式。
Openlayers的继承类图
Openlayers 其他基础类
- Collection
Collection 类是Openlayers 扩展 js 数组功能的类,实现集合中元素的增删改变的事件侦听。Collection类在Openlayers广泛使用在ol需要用到集合的地方,如:
- Map的 controls类实例的集合,interaction实例的集合,overlay实例的集合。
- 矢量数据源 Feature实例的集合。
- BaseEvent
基本的地图事件对象基类,简单实现了DOM Event接口的功能,包括事件类型,目标等属性和,阻止冒泡,阻止默认事件的方法的实现。
地图中的事件对象都继承自此类。
- AssertionError
Openlayers 错误类,继承自js Error类,抛出Openlayers 66种异常的错误。
Openlayers基本的类大致是如上所说,其他的类也是由基础类继承而来。接下来就学习Openlayers 的大佬了,Map类,我们下篇见。