2-Openlayers 源码学习 - ol的工具和基础类和模块

445 阅读2分钟

接上一回,正式开始ol的源码学习之旅。这篇文章记录学习ol的辅助工具和基础类和模块的源码。

Openlayers 的基本模块

工具类主要是方便开发地图模块的一些通用操作和通用的方法。进入源码工程的 src/ol 文件目录中可以看到命名语义化的一些js文件,里面包括了一些工具类和模块。 可以看到,目录中小写命名的js文件基本上的导出的module,常量和函数

根据里面的用途,画了一个脑图:

ol辅助模块.png

以上的这些都是Openlayers的一些常用的函数,在各个类当中广泛应用

Openlayers 最基础的类

使用过Openlayers 大家会发现,常用的类诸如 Map, View, Control, Layer等都会有 on, un方法。从继承链溯源回去,可以看到on,un方法的实现是在Observable.js中的 Observable类实现,而Observable类继承至Target。Target事件目标类简单实现了W3C DOM Level 2 EventTarget接口。Target类实现了常用的注册事件侦听器,移除事件侦听器,事件派发的方法。

为啥要这么设计,个人猜测地图上的交互是比较多的,类似事件处理和驱动的需求比比皆是,基于事件驱动编程模式是比较合适的方式。

Openlayers的继承类图

ol基类.png

Openlayers 其他基础类

  • Collection

Collection 类是Openlayers 扩展 js 数组功能的类,实现集合中元素的增删改变的事件侦听。Collection类在Openlayers广泛使用在ol需要用到集合的地方,如:

  1. Map的 controls类实例的集合,interaction实例的集合,overlay实例的集合。
  2. 矢量数据源 Feature实例的集合。
  • BaseEvent
    基本的地图事件对象基类,简单实现了DOM Event接口的功能,包括事件类型,目标等属性和,阻止冒泡,阻止默认事件的方法的实现。

地图中的事件对象都继承自此类。

image.png

  • AssertionError
    Openlayers 错误类,继承自js Error类,抛出Openlayers 66种异常的错误。

Openlayers基本的类大致是如上所说,其他的类也是由基础类继承而来。接下来就学习Openlayers 的大佬了,Map类,我们下篇见。