⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handler.js

📁 用来在地图上做操作GIS,在地图上做标记
💻 JS
字号:
/* Copyright (c) 2006-2007 MetaCarta, Inc., published under the BSD license. * See http://svn.openlayers.org/trunk/openlayers/release-license.txt  * for the full text of the license. *//** * @requires OpenLayers/Events.js *  * Class: OpenLayers.Handler * Base class to construct a higher-level handler for event sequences.  All *     handlers have activate and deactivate methods.  In addition, they have *     methods named like browser events.  When a handler is activated, any *     additional methods named like a browser event is registered as a *     listener for the corresponding event.  When a handler is deactivated, *     those same methods are unregistered as event listeners. * * Handlers also typically have a callbacks object with keys named like *     the abstracted events or event sequences that they are in charge of *     handling.  The controls that wrap handlers define the methods that *     correspond to these abstract events - so instead of listening for *     individual browser events, they only listen for the abstract events *     defined by the handler. *      * Handlers are created by controls, which ultimately have the responsibility *     of making changes to the the state of the application.  Handlers *     themselves may make temporary changes, but in general are expected to *     return the application in the same state that they found it. */OpenLayers.Handler = OpenLayers.Class({    /**     * Property: id     * {String}     */    id: null,            /**     * APIProperty: control     * {<OpenLayers.Control>}. The control that initialized this handler.  The     *     control is assumed to have a valid map property - that map is used     *     in the handler's own setMap method.     */    control: null,    /**     * Property: map     * {<OpenLayers.Map>}     */    map: null,    /**     * APIProperty: keyMask     * {Integer} Use bitwise operators and one or more of the OpenLayers.Handler     *     constants to construct a keyMask.  The keyMask is used by     *     <checkModifiers>.  If the keyMask matches the combination of keys     *     down on an event, checkModifiers returns true.     *     * Example:     * (code)     *     // handler only responds if the Shift key is down     *     handler.keyMask = OpenLayers.Handler.MOD_SHIFT;     *     *     // handler only responds if Ctrl-Shift is down     *     handler.keyMask = OpenLayers.Handler.MOD_SHIFT |     *                       OpenLayers.Handler.MOD_CTRL;     * (end)     */    keyMask: null,    /**     * Property: active     * {Boolean}     */    active: false,        /**     * Property: evt     * {Event} This property references the last event handled by the handler.     *     Note that this property is not part of the stable API.  Use of the     *     evt property should be restricted to controls in the library     *     or other applications that are willing to update with changes to     *     the OpenLayers code.     */    evt: null,    /**     * Constructor: OpenLayers.Handler     * Construct a handler.     *     * Parameters:     * control - {<OpenLayers.Control>} The control that initialized this     *     handler.  The control is assumed to have a valid map property; that     *     map is used in the handler's own setMap method.     * callbacks - {Object} An object whose properties correspond to abstracted     *     events or sequences of browser events.  The values for these     *     properties are functions defined by the control that get called by     *     the handler.     * options - {Object} An optional object whose properties will be set on     *     the handler.     */    initialize: function(control, callbacks, options) {        OpenLayers.Util.extend(this, options);        this.control = control;        this.callbacks = callbacks;        if (control.map) {            this.setMap(control.map);         }        OpenLayers.Util.extend(this, options);                this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");    },        /**     * Method: setMap     */    setMap: function (map) {        this.map = map;    },    /**     * Method: checkModifiers     * Check the keyMask on the handler.  If no <keyMask> is set, this always     *     returns true.  If a <keyMask> is set and it matches the combination     *     of keys down on an event, this returns true.     *     * Returns:     * {Boolean} The keyMask matches the keys down on an event.     */    checkModifiers: function (evt) {        if(this.keyMask == null) {            return true;        }        /* calculate the keyboard modifier mask for this event */        var keyModifiers =            (evt.shiftKey ? OpenLayers.Handler.MOD_SHIFT : 0) |            (evt.ctrlKey  ? OpenLayers.Handler.MOD_CTRL  : 0) |            (evt.altKey   ? OpenLayers.Handler.MOD_ALT   : 0);            /* if it differs from the handler object's key mask,           bail out of the event handler */        return (keyModifiers == this.keyMask);    },    /**     * APIMethod: activate     * Turn on the handler.  Returns false if the handler was already active.     *      * Returns:      * {Boolean} The handler was activated.     */    activate: function() {        if(this.active) {            return false;        }        // register for event handlers defined on this class.        var events = OpenLayers.Events.prototype.BROWSER_EVENTS;        for (var i = 0; i < events.length; i++) {            if (this[events[i]]) {                this.register(events[i], this[events[i]]);             }        }         this.active = true;        return true;    },        /**     * APIMethod: deactivate     * Turn off the handler.  Returns false if the handler was already inactive.     *      * Returns:     * {Boolean} The handler was deactivated.     */    deactivate: function() {        if(!this.active) {            return false;        }        // unregister event handlers defined on this class.        var events = OpenLayers.Events.prototype.BROWSER_EVENTS;        for (var i = 0; i < events.length; i++) {            if (this[events[i]]) {                this.unregister(events[i], this[events[i]]);             }        }         this.active = false;        return true;    },    /**    * Method: callback    * Trigger the control's named callback with the given arguments    *    * Parameters:    * name - {String} The key for the callback that is one of the properties    *     of the handler's callbacks object.    * args - {Array(*)} An array of arguments (any type) with which to call     *     the callback (defined by the control).    */    callback: function (name, args) {        if (this.callbacks[name]) {            this.callbacks[name].apply(this.control, args);        }    },    /**    * Method: register    * register an event on the map    */    register: function (name, method) {        // TODO: deal with registerPriority in 3.0        this.map.events.registerPriority(name, this, method);        this.map.events.registerPriority(name, this, this.setEvent);    },    /**    * Method: unregister    * unregister an event from the map    */    unregister: function (name, method) {        this.map.events.unregister(name, this, method);           this.map.events.unregister(name, this, this.setEvent);    },        /**     * Method: setEvent     * With each registered browser event, the handler sets its own evt     *     property.  This property can be accessed by controls if needed     *     to get more information about the event that the handler is     *     processing.     *     * This allows modifier keys on the event to be checked (alt, shift,     *     and ctrl cannot be checked with the keyboard handler).  For a     *     control to determine which modifier keys are associated with the     *     event that a handler is currently processing, it should access     *     (code)handler.evt.altKey || handler.evt.shiftKey ||     *     handler.evt.ctrlKey(end).     *     * Parameters:     * evt - {Event} The browser event.     */    setEvent: function(evt) {        this.evt = evt;        return true;    },    /**     * Method: destroy     * Deconstruct the handler.     */    destroy: function () {        // unregister event listeners        this.deactivate();        // eliminate circular references        this.control = this.map = null;            },    CLASS_NAME: "OpenLayers.Handler"});/** * Constant: OpenLayers.Handler.MOD_NONE * If set as the <keyMask>, <checkModifiers> returns false if any key is down. */OpenLayers.Handler.MOD_NONE  = 0;/** * Constant: OpenLayers.Handler.MOD_SHIFT * If set as the <keyMask>, <checkModifiers> returns false if Shift is down. */OpenLayers.Handler.MOD_SHIFT = 1;/** * Constant: OpenLayers.Handler.MOD_CTRL * If set as the <keyMask>, <checkModifiers> returns false if Ctrl is down. */OpenLayers.Handler.MOD_CTRL  = 2;/** * Constant: OpenLayers.Handler.MOD_ALT * If set as the <keyMask>, <checkModifiers> returns false if Alt is down. */OpenLayers.Handler.MOD_ALT   = 4;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -