3.5.2 可选组件—— OpenLayers 的事件机制
在 OpenLayers 框架中, OpenLayers.Events 是唯一与组件事件处理相关的类。无论是声明、注册还是触发事件,都是直接在 OpenLayers.Events 对象上。所以,如果要想让一个对象具有事件处理的能力,需要至少在其内部包含一个 OpenLayers.Events 对象。幸运的是,因为 OpenLayers.Control 类的构造函数已经自动在其内部包含了一个 OpenLayers.Event 对象,并将其保存到 events 字段当中。因此,编写控件的人不需要担心这一问题。
那么,如何编写控件才能让它拥有自己的事件呢?
首先,在控件类调用父类构造函数前,应该将自己支持的事件名称数组赋值给 this.EVENT_TYPES 字段。由于 OpenLayers.Control 类已经拥有了一些事件,因此,在赋值时不要忘记加上这些事件(框架是不会为你加入这些事件的)。比如,我们要在编写的控件类 OpenLayers.Control.MyControl 中加入事件“ MyEvent1 ”和“ MyEvent2 ”,那么,就需要在构造函数调用 OpenLayers.Control 类的构造函数之前加入如下代码: