OpenLayers 如何管理多控件的激活

在使用OpenLayers的时候,常常需要使用多个控件,来实现像:绘制矢量要素(DrawFeature),查询要素属性(WMSGetFeatureInfo),等等。这样就需要在不同的控件之间进行切换,也就是激活控件。常用的方式是,在创建控件的时候,保存到一个数组中,并给予命名,例如:

var infoControls = {
    click: new OpenLayers.Control.WMSGetFeatureInfo(), // 参数省略
    hover: new OpenLayers.Control.WMSGetFeatureInfo()// 参数省略
};

这样,我们就可以通过infoControls.click来获取到该控件。1)当我们使用radio来标记当前使用的控件,就可以通过如下函数来切换控件。

function toggleControl(element) {
    for (key in drawControls) {
        var control = drawControls[key];
        if (element.value == key && element.checked) {
            control.activate();
        } else {
            control.deactivate();
        }
    }
}

2)如果我们使用OpenLayers.Control.Panel来管理控件,可以获取buttonclick事件,来确定到底点击的是哪个控件,然后激活。

(function(controls) {
    map.events.register("buttonclick", this, function(evt) {
        var button = evt.buttonElement;
        for (var tempName in controls) {
            if (controls[tempName].panel_div == button) {
                controls[tempName].activate();
            } else {
                controls[tempName].deactivate();
            }
        }
    })
})(controls);

3)当然,你还可以参考EditingToolbar去扩展OpenLayers,然后扩展一个特有的Panel对象,然后直接默认去处理。=====================================================================================

生活不仅需要激情四射,也需要闲庭信步。

时间: 2024-10-13 05:32:25

OpenLayers 如何管理多控件的激活的相关文章

qt 布局管理按钮控件间有空隙?

定义了几个按钮控件,想要按钮间没有空隙,我使用setspaces(0)来设置它们之间的间隔. 结果控件间还是有空隙,如图 我对控件所在的widget的背景进行设置,(会把style传到子控件)发现结果如图 对按钮控件的背景进行设置,结果如图 所以把按钮控件的背景重新设置一下就ok了.

OpenLayers 3 之 扩展自定义控件--以切换图层控件为例

openlayers 中的控件,是一个固定在页面某个位置的可见的DOM元素,它们可能包含可操作的按钮,也可能只是单纯的展示信息,它们的位置及其样式是由与其关联的CSS样式决定的.默认情况下,它们都位于一个CSS 类(class)为ol.overlaycontainer-stopevent的元素内,当然也可以使用其他的自定义的DOM容器元素. 在openlayers 的结构中,控件有很多,比如左上角的缩放控件.右下角的属性控件,这些控件都是继承一个基类 ol.control.Control,基类主

OpenLayers 之 控件(control)详解

每一个地图应用都应该有一些工具方便用户控制地图的行为,比如缩放,全屏,坐标控件等等,在 OpenLayers 中怎么添加这些工具呢?下面我给大家介绍一下 OpenLayers 中包含的控件种类,并介绍其使用方法.对控件的定制化,和对 OpenLayers 增加控件和优化控件等超出了本文范围. 一.control 类 OpenLayers 中的控件是由 control 类定义的,这是一个虚基类,不负责实例化特定的控件,它的主要作用是让其他具体的种类的控件类实现继承.OpenLayers 中包含的控

Qt入门之常用qt控件认知之QLayout

了解布局,首先得清楚一个概念,就是容器控件.容器控件就是可以容纳别的控件的一种控件,如QWidget,所以就会出现父类控件与子类控件.为了很好的管理这种父子类控件,常用的有几种方法: 第一种就是使用绝对位置,setGeometry定位子类控件相对于父类控件.第二种就是常见的布局. 布局管理,其实就是为容器控件管理子类控件的位置和尺寸,所以布局本身没有存在的意义,其需要和容器控件搭配使用,为容器控件管理子控件服务. 而布局QLayout类其实只是一组预先撰写好的代码,相当于提前写出了以一个控件存放

tkinter的控件

包含如下控件: Button  按钮控件 Canvas 画布控件,显示图形元素如线程或文本 Checkbutton 多选框控件,用于在程序中提供多项选择框 Entry 输入控件,用于显示简单的文本内容 Frame 框架控件,在屏幕上显示一矩形区域,多用来作为容器 Label 标签控件,可以显示文本和位图 Listbox 列表控件,可以显示文本和位图 Menubutton 菜单按钮控件,用于显示菜单项 Menu 菜单控件,显示菜单栏,下拉菜单,和弹出菜单 Message 消息控件,用来显示多行文本

Winform控件之菜单控件,工具栏控件和状态栏控件

菜单是用户获取应用程序中主要功能和实用程序的主要途径,如新建文件,打开文件等,这就需要用到菜单控件(MenuStrip).工具栏另一种获取应用程序主要功能的常用方法,比起菜单要直观,这就需要用到工具栏控件(ToolStrip).状态栏用于显示用户状态的简短信息,这就需要用到状态栏控件(StatusStrip). 一,MenuStrip控件和ContenxMenuStrip控件 MenuStrip控件是由System.Windows.Forms.MenuStrip类提供的,取代了以前的MainMe

C语言实现的简易可移植GUI控件库

从大一开始接触到单片机(MCU),一直都觉得挺好玩的.从8位的51单片机到16位的TI MSP系列的单片机都尝试学过.感觉还不错,不过,以前一直都觉得32位的ARM处理器距离自己很遥远.幸运的是,如今我确实有机会接触一款32位的处理器了.当然使用的是Cortext M4内核,TI Stellaris系列处理器之一.       在这几天的学习中,发现高端的处理器确实很强大,不管是内存,FLash存储空间,还是内部的各种硬件资源都极为丰富.也让我一时间不知所措了.此外,还学习了下TFT彩屏的操作.

.NET中的计时器控件Timer

本章借介绍一些粗浅的Timer控件使用方法. 介绍Timer控件的常用属性和事件 1. Interval 属性表示 Timer控件的时间间隔. 类型是int默认是毫秒. 2. Enabled 属性 表示Timer控件是否激活. 如果激活的话,一进入Timer的Tick事件就开始执行.所以默认是false 3. Start() 方法 开始执行 4. Stop() 方法 停止执行 5. Tick  事件 表示Timer控件将要执行的代码. 常规使用方式 1.添加一个Timer控件 2.设置好必要的属

常用的Activex 控件

1. Flash Player  ActiveX Control 6.0.47.0 与FLASH 6.0配套的浏览器端动画播放插件                  download.pchome.net/development/activex/551.html 2. ACE Mega Codec Pack Professional 6.03 目前互联网上最齐全的多媒体文件播放插件CoDecS.ActiveXFilterS和其他应用程序(基于                  www.onlin