日期:2014-05-16  浏览次数:20501 次

基于OpenLayer工具栏管理类的Javascript类定义

基于OpenLayer工具栏管理类的Javascript类定义

mapCwgisToolBarClass.js

//定义工具栏管理类
//mapCwgisToolBarClass.js
//vp:hsg
//create date:2013-07-31
//modify date:2013-08-01
//定义全局变量
var cmToolbar = null;
//插件调用方法cmToolbar.addItem(pluginCmdTool);
//定义工具栏管理类
mapCwgisToolBarClass = OpenLayers.Class(
{
    //
    m_ToolBarItems: null,
    isScan: false,
    //初始化函数
    initialize: function () {
        this.m_ToolBarItems = [];
        
    },
    //添加插件项
    addItem: function (item) {
        if (item != null) {
            this.m_ToolBarItems.push(item);
        }
    },
    //反激活插件集合
    deactivateItems: function () {
        //清除全局地图事件鼠标监听者
        mapWrap.map.events.clearMouseListener();
        //反激活所有全局工具
        if (this.m_ToolBarItems == null) return;
        for (var item in this.m_ToolBarItems) {
            if (item != null) {
                try {
                    this.m_ToolBarItems[item].dispose();
                }
                catch (e) { }
                this.m_ToolBarItems[item].deactivate();
            }
        }
    },
    //启动扫描
    startScan: function () {
        this.isScan = true;
        window.setInterval('loopScanItemEvent()', 1000); //1000为1秒钟,时间可以自己设
    },
    //循环扫描项事件
    loopScanItemEvent: function () {
        if (this.isScan == true) {
            for (var item in this.m_ToolBarItems) {
                if (this.isScan == false) break;
                if (item != null) {
                    item.enabled;
                }
            }
        }
    },
    //释放类
    dispose: function () {
        this.isScan = false;
        this.deactivateItems();
        this.m_ToolBarItems = null;
        OpenLayers.Class.prototype.destroy.apply(this, arguments);
    },
    //类名称
    CLASS_NAME: "mapCwgisToolBarClass"
});
//实例化一个全局工具条管理类
cmToolBar = new mapCwgisToolBarClass();

//定义插件Command基类  继承于OpenLayers.Class(OpenLayers.Control)
//基类抽象类名称:mapCwgisPluginCommand
mapCwgisPluginCommand = OpenLayers.Class(OpenLayers.Control,
{
    //定义属性
    mapWrap: null,
    //定义类  初始化函数
    init: function (p_mapCwgisClass) {
        this.mapWrap = p_mapCwgisClass;
        this.setMap(this.mapWrap.map);
    },
    initialize: function (p_mapCwgisClass, options) {
        this.init(p_mapCwgisClass);
        //
        this.displayClass =
            this.CLASS_NAME.replace("OpenLayers.", "ol").replace(/\./g, "");

        OpenLayers.Util.extend(this, options);
        //
        this.events = new OpenLayers.Events(this, null, this.EVENT_TYPES);
        if (this.eventListeners instanceof Object) {
            this.events.on(this.eventListeners);
        }
        if (this.id == null) {
            this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_");
        }
    },
    //---------------------------------------------
    /**
    * Method: activate
    * Activates the control.
    * 
    * Returns:
    * {Boolean} The control was effectively activated.
    */
    activate: function () {
        if (!this.active) {
            for (var i in this.handlers) {
                this.handlers[i].activate();
            }
        }
        return OpenLayers.Control.prototype.activate.apply(
            this, arguments
        );
    },

    /**
    * Method: deactivate
    * Deactivates the control.
    * 
    * Returns:
    * {Boolean} The control was effectively deactivated.
    */
    deactivate: function () {
        if (this.active) {
            for (var i in this.handlers) {
                this.handlers[i].deactivate();
            }
        }
        return OpenLayers.Control.prototype.deactivate.apply(
            this, arguments
        );
    },
    //---------------------------------------------
    //释放类
    dispose: function () {
        this.deactivate();
    },
    //定义单击事件
    onClick: function () {
        if (