OpenLayers的selector工具相信挺多人都没有用过,其实这个工具用处还是不少的。比如完成元素查询时,需要实现图属性联动,使用这个工具很方便。最近做项目时也使用到这个工具,使用起来确实挺方便的。效果如图:

红色部分为使用selector选择的效果。

下面说说实现过程:

定义selector工具,并添加到地图中

//高亮元素选择
selectControls = {
selector: new OpenLayers.Control.SelectFeature(this.hightLightVectorLayer, {
selectStyle: { fillColor: 'red', zIndex: 500 },
toggle: true,
onSelect: function (feature) {
that.hightLineEleSelectCallback(feature, that);
},
onUnselect: function (feature) {
that.map.popups.length > 0 && that.map.popups[0].destroy();
}
})
};
map.addControl(selectControls['selector']]);

  

这里要和大家说说它的几个属性:

(1)this.hightLightVectorLayer指的是目标图层,这个工具可以选择哪个图层上的元素。

(2)selectStyle:{},是选中元素的样式。

(3)Toggle是指第一个点击选中上,第二次取消选中,第三次选中…..

(4)onSelect是一个事件类型的属性,指选中元素后,执行的操作,有个参数feature,feture有该元素的fid等信息,可以用来进行图属联动

(5)onUnselect指的是图层中非元素的点击事件。

(6)还有其他的许多属性,如hover: false,callback等,有兴趣的可以看看。

2.元素选择回调方法。主要是添加pupop到地图上显示信息。也可使用feature.attributes.fid属性和属性结果进行联动。我这里做的是添加popup到地图上,代码如下:

/*
* 岩石地层高亮元素选择回调方法,展示popup
* Parameters:
* feature: - {Openlayers feature element} 当前选中的元素
* that: - {object} 当前上下文
*/
hightLineEleSelectCallback: function (feature, that) {
//添加popup内容
var popupStr = '<div class="faultInfoPopupCon">'
'<div class="head rockHead">' returnData.name '<label>123</label></div>'
'<div class="rockMain">'
'<table>'
'<tr>'
'<td><label class="name">厚度:</label></td>'
'<td><label class="value">123m</label></td>'
'</tr>'
'<tr>'
'<td><label class="name">岩性描述:</label></td>'
'<td><label class="value">mayday</label></td>'
'</tr>'
'</table>'
'</div>'
'</div>';
//add popup
feature.popup = new OpenLayers.Popup.NestFramedCloud("pop",
feature.geometry.getBounds().getCenterLonLat(),
null, popupStr, null, true,
function () { //pupop关闭方法
selectControls.selector.unselectAll();
map.popups.length > 0 &&map.popups[0].destroy();
}, {
imageSrc: baseUrl 'Scripts/libs/rrpopup/img/nest-popup.png'
});
map.popups.length > 0 && map.popups[0].destroy();
map.addPopup(feature.popup);
},

  

关于这个OpenLayers.Control.SelectFeature工具,还有其他很多的属性,大家可以参考类OpenLayers.Control.SelectFeature进行学习。

OpenLayers元素选择工具的更多相关文章

  1. 『与善仁』Appium基础 — 17、元素定位工具(一)

    目录 1.uiautomatorviewer介绍 2.uiautomatorviewer工具打开方式 3.uiautomatorviewer布局介绍 4.uiautomatorviewer工具的使用 ...

  2. 『与善仁』Appium基础 — 18、元素定位工具(二)

    目录 1.Appium Inspector介绍 2.Appium Inspector打开方式 3.Appium Inspector布局介绍 4.Appium Inspector工具的配置 5.Appi ...

  3. 『与善仁』Appium基础 — 19、元素定位工具(三)

    目录 1.Chrome Inspect介绍 2.Chrome Inspect打开方式 3.Chrome Inspect工具的使用 (1)Chrome Inspect工作前提 (2)Chrome Ins ...

  4. android EditText长按屏蔽ActionMode context菜单但保留选择工具功能

    最近项目要求屏蔽EditText 长按出来的ActionMode菜单,但是要保留选择文本功能.这个屏蔽百度会出现各种方法,这里说一下我的思路: 1.屏蔽百度可知setCustomSelectionAc ...

  5. IT忍者神龟之Photoshop解析新手抠图的5个高速选择工具

    一:魔棒工具 这是建立选区最简单的方法.但仅仅有在背景色为纯色时才会比較有效. 因此,当要选择的对象的背景为空白背景时.可使用魔棒工具,比如一张产品拍摄图. 在建立选区时,首先,要确保图片在一个图层中 ...

  6. Dotfuscator自定义规则中的元素选择

    Dotfuscator是专业的.NET程序代码保护软件.是支持规则自定义的,你可以对重命名.程序控制流.字符串加密等等功能自定义规则.在进行规则自定义过程中,可以通过元素的不同选择,满足自己的程序需要 ...

  7. ps入门教程:选择工具、移动工具、索套工具的使用

    本节课程主要内容:1.学习矩形选择工具.椭圆选择工具.移动工具.多边形套索工具.套索工具.磁性套索工具和魔术 棒选择工具.2.用套索和磁性套索,实现对人物照片的抠图.----------------- ...

  8. PS中如何提高修改psd图片的效率(自动选择工具)

    在photoshop中制作图片的时候,一般要养成保留psd格式的习惯,纵然普通时候jpg,png格式常用,考虑到以后可能需要修改,也应该备份一下.如果考虑到以后需要修改,可每次成品保存成两个,一个ps ...

  9. appium 元素定位工具

    两种元素定位工具: 1.uiautomatorviewer是android-sdk自带的一个元素定位工具,目录D:\androidsdk\androidsdk\tools\bin . 双击启动uiau ...

随机推荐

  1. http 登录Digest认证相关知识

    Digest access authentication https://en.wikipedia.org/wiki/Digest_access_authentication Digest acces ...

  2. 分析App应用市场, App应用有哪些类型

    随着移动互联网的流行,APP应用也是异常火爆,App应用市场就如破冰的泉水在我们的生活中到处渗透,对于App开发的的状况来分析,企业在寻找技术人员开发一款专业的App软件的时候,必须先了解用户的需求与 ...

  3. android Dialog&AlertDialog

    Dialog dialog = new Dialog(context,R.style.AppBaseTheme); wifiView = AppData.inflater.inflate(R.layo ...

  4. 日志时间格式有s,ms,us,如何排序最大10行

    这个比较繁琐,谁有更好方法?告诉我  [root@module tmp]# cat oldboy.txt       12s120001ms12000000us13s[root@module tmp] ...

  5. jfinal 解决ajax 跨域访问--jsonp

    JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的 js无法操作b.com或是c.a.com域名下的对象. ...

  6. jQuery 菜单

  7. mysql 触发器示例和注解

    -- 格式 CREATE TRIGGER 触发器名称 AFTER|before insert|update|delete ON 触发表 FOR EACH ROW BEGIN insert into 处 ...

  8. 使用百度地图api接口获取公交地图路线和车站

    需要在页面文件中引用百度的js @*<script type="text/javascript" src="http://api.map.baidu.com/api ...

  9. AppCan JSSDK模块扩展

    1.      从源码开始: 我们先看源码的8188行到9525行: window.appcan && appcan.define('window',function($,export ...

  10. SVN在eclipse的整合应用

    目前很多的Java.Flex.Android开发人员是用eclipse作为开发工具的,本文主要介绍SVN在eclipse平台中的整合应用. 我的eclipse版本是Version: 3.4.2.本身没 ...