infoWindowRenderer之个人见解
在地图上以类似于提示框的方式显示查询信息,类似于arcmap中单击图层查看属性 由于Class Graphic有infoWindowRenderer : IFactory这个属性 (注:infoWindowRenderer property
infoWindowRenderer:IFactory [read-write] The infoWindowRenderer is a UIComponent factory that is added to a graphic. Wen infoWindowRenderer is defined on a graphic, a mouse "click" listener is automatically added to the graphic. When graphic is clicked, a UIComponent instance is created, using the factory and if that factory implements the IDataRenderer interface then its data property is set to the graphic attributes. In addition, if the UIComponent has a dataProvider property, then that property is set to the graphic attributes as well. Finally, the map info window content is set to the newly created UIComponent and is shown at an anchor location. If the geometry of the graphic is a map point, then the anchor location will be that map point, otherwise the anchor point will be where the user clicked map point location.
This property can be used as the source for data binding. 详见:http://resources.esri.com/help/9.3/arcgisserver/apis/flex/apiref/com/esri/ags/Graphic.html#infoWindowRenderer)
graphic会自动的监听click事件,当用户单击到图层上的某个元素时,infoWindowRenderer会自动创建一个实例,因此我们只需 private var myInfoWindowRenderer:ClassFactory = new ClassFactory(MyInfoWindowRenderer);
(注:ClassFactory 类实现 IFactory 接口。因此,通过该类,您可以创建可分配到 IFactory 类型属性的对象)
新建Component组建,有两种方式:
1)在mxml内部创建,如下
<mx:Component className="MyInfoWindowRenderer">
<mx:VBox label="{data.STATE_NAME}" backgroundColor="0xEEEEEE">
<mx:Label text="State Fips: {data.STATE_FIPS}"/>
<mx:Label text="Abbreviation: {data.STATE_ABBR}"/>
<mx:Label text="Area: {data.AREA}"/>
</mx:VBox>
</mx:Component>
2)File->New->MXML Component文件,然后在<mx:Script>中导入你新建的as文件(MXML最后会编译成as文件,所以以包的形式导入即可)
例如:import component.MyInfoWindowRenderer;//component是我在当前文件目录下创建的文件夹
第二种方式可降低耦合度(耦合度的强弱可根据系统本身来自行决定,如模块设计科采用高内聚低耦合)
最后便可以进行查询之后的操作啦,例如在click事件里添加一些处理函数等等, 例如(这是自带的一些例子example)
private function onMapClick(event:MapMouseEvent):void
{
query.geometry = event.mapPoint;
queryTask.execute(query);
}
private function onQueryExecuteComplete(event:QueryEvent):void
{
graphicsLayer.clear();
var fset:FeatureSet = event.featureSet;
for each (var graphic:Graphic in fset.features) //因为每次都选定一个要素,
{ //循环遍历只进行一次,因此可以采用下面的方式
graphic.symbol = symbol;
graphic.infoWindowRenderer = myInfoWindowRenderer;
graphicsLayer.add(graphic); //当然你也可以加载地图的时候便把所有图形要素预加载到
} //graphicsLayer之中,这样提高里查询的效率,但可能会影响加载速度
// fset.features[0].symbol = symbol;
// fset.features[0].infoWindowRenderer = myInfoWindowRenderer;
// graphicsLayer.add(fset.features[0]);
}
infoWindowRenderer之个人见解的更多相关文章
- [OC笔记] Category分类之见解
用过别的语言做过开发的同学都知道,如果你想扩充一个类,就应该去继承这个类.但是OC里面有更好的方法,那就是分类. 那什么是分类呢?就是在不改变原先类,我们可以在其中添加咱们自定义的方法,这样和同事合作 ...
- "!x++" 我之见解
"!x++"之说,各人见解不同,但真理只有一个.我只尝试着说出一种见解,未知真相. 何如? "!x++"等价于"!(x++)". 理论分析 ...
- 谈谈自己对于Auth2.0的见解
Auth的原理网上有很多,我这里就不在赘述了. 这里有张时序图我个人觉得是比较合理而且直观的,(感谢这篇博文:http://justcoding.iteye.com/blog/1950270) 参照这 ...
- Qt见解:Post 与 Get 的区别(Get将参数直接与网址整合为一个整体,而Post则将其拆为两个部分)
第一次接触Qt的Http项目,今天看了一下Post和Get的基本使用方法,就开始尝试了.原先以为Post专门用于向服务器发送请求,然后接收服务器应答的: 而Get只是单纯从服务器获取资源,比如下载这个 ...
- IT见解
IT见解 北京海淀区 2014-10-18 张俊浩 *域名的市值在走低,因其功能被新浪.腾讯微博.微信大V这种账号所代替 *小米将自己定位为互联网公司,而不是手机公司 *手机不远的未来会成为公共 ...
- in_array 判断的一些见解
我个人见解in_array的判断是== 并不是=== 证明如下: $arr=(array_merge(range(1, 9),range('a', 'z'),range('A', 'Z')));$m ...
- 阿里巴巴Java开发手册———个人追加的见解和补充(一)
先上干货,<阿里巴巴Java开发手册>的下载地址 https://yq.aliyun.com/articles/69327?spm=5176.100239.blogcont69327.15 ...
- React,关于redux的一点小见解
最近项目做多页面应用使用到了,react + webpack + redux + antd去构建多页面的应用,本地开发用express去模拟服务端程序(个人觉得可以换成dva).所以在这里吐槽一下我自 ...
- Qlik报表开发见解
因为项目需要,最近去做了Qlik Sense报表开发,学习了Qlik报表的开发方法和一些基础的开发模式,以下是我对Qlik报表开发的一些见解,个人水平有限,欢迎大神指导. 1.Qlik Sense的函 ...
随机推荐
- android学习笔记17——对话框(PopupWindow)
PopupWindow ==> PopupWindow可创建类似对话框的窗口,使用其创建对话框窗口的操作步骤: 1.调用PopupWindow构造器构造PopupWindow对象: 2.调用Po ...
- foxmail 6.5升级到7.0版本后,旧邮件的导入处理
随着foxmail 7.0版的火热升级,部分从foxmial 6.5版升级到7.0版的用户可能会出现旧邮件丢失的困扰.这里,foxmail为大家提供的解决方案如下: 打开Foxmail,点击 文件 ...
- JQuery 常用方法基础教程
本文转自(http://www.cnblogs.com/Leo_wl/archive/2010/06/22/1762401.html) 对于学习使用jquery 的朋友,能用的到,简单的了解下jque ...
- 洛谷 P1060 开心的金明
开心的金明 Problem Description: 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间.更让他高兴的是,妈妈昨天对他说:"你的房间需要购买哪些 ...
- hiho #1014 : Trie树
#1014 : Trie树 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助, ...
- Codeforces Round #367 (Div. 2) Hard problem
Hard problem 题意: 有n个字符串,对第i个字符串进行反转操作代价为ci. 要使n个字符串按照字典序从小到大排列,最小的代价是多少. 题解: 反转就是reverse操作,比如说45873反 ...
- MYSQL 安装更新,使用,管理,备份和安全等
如何安装更新,使用,管理,备份和安全,维护优化一个MYSQL系统. 一.MYSQL发展历史,特点.对SQL语法进行介绍 二.如何安装一个MYSQL系统 三四.如何利用SQL语言以及其他的客户工具对MY ...
- Centos 7 修改SSH端口号
注意!这里的Centos版本是7 step1 修改/etc/ssh/sshd_config vi /etc/ssh/sshd_config #Port 22 //这行去掉#号 Po ...
- css如何让表格table的边框为1像素呢
在Html中使用table是网页制作中必不可缺的一部分,如果直接给css设置table里面的td边框为1像素的话,那么实际我们从网页上看到的效果却不是1像素. 那么我们怎么用css让table的边框为 ...
- ios8消息快捷处理——暂无输入框
if (isiOS8) { //ios8的远程推送注册 NSSet *set = nil; #if 1 //1.创建消息上面要添加的动作(按钮的形式显示出来) UIMutableUserNotific ...