arcgis api for flex 高级主题(二) 自定义控件的开发
来源:互联网 发布:java如何判断文件大小 编辑:程序博客网 时间:2024/04/30 04:44
arcgis api for flex 本身只提供了Navigation和ScaleBar两个控件,并且api中
对如何开发自定义的控件做详细的描述(也可能有,是我没找到)、
下面就介绍一下我的方法。以实现一个能在地图上动态显示当前鼠标经纬度的控
件。
1 定义控件类,集成UIComponent ,实现IMapAware接口
2 重载createChildren函数
3 实现public function set map(map:Map) : void 函数
var statusBar:ESRIStatusBar = new ESRIStatusBar();
IMapAware(statusBar).map = EsriMap;
EsriMap.addChild(statusBar);
放代码
对如何开发自定义的控件做详细的描述(也可能有,是我没找到)、
下面就介绍一下我的方法。以实现一个能在地图上动态显示当前鼠标经纬度的控
件。
1 定义控件类,集成UIComponent ,实现IMapAware接口
2 重载createChildren函数
3 实现public function set map(map:Map) : void 函数
4 添加自己的功能代码
package com.esri{ import com.esri.ags.*; import com.esri.ags.events.*; import com.esri.ags.geometry.MapPoint; import com.esri.ags.utils.*; import flash.display.*; import flash.events.MouseEvent; import flash.filters.*; import flash.text.*; import flash.geom.Point; import mx.core.*; import mx.events.*;public class ESRIStatusBar extends UIComponent implements IMapAware{ private var m_map:Map; private var m_stateLabel:TextField; public function ESRIStatusBar() { m_stateLabel = new TextField(); m_stateLabel.width = 152; } override protected function updateDisplayList(log:Number, pow:Number) : void { super.updateDisplayList(log, pow); return; }// end function override protected function createChildren() : void { super.createChildren(); var pnt:Point = new Point; if(m_map.loaded) { var mapPnt:MapPoint = new MapPoint(m_map.extent.xmax,m_map.extent.ymin); pnt = m_map.toScreen(mapPnt); m_stateLabel.x = pnt.x-150; m_stateLabel.y = pnt.y-16; } addChild(m_stateLabel); return; }// end function private function mouseMoveHandler(event:MouseEvent):void { if(m_map) { if(m_map.loaded) { var mapPoint : MapPoint = m_map.toMapFromStage(event.stageX, event.stageY); m_stateLabel.text = "x="+mapPoint.x.toString()+" , y="+mapPoint.y.toString(); } } } private function extentChangeHandler(event:ExtentEvent):void { var pnt:Point = new Point; var mapPnt:MapPoint = new MapPoint(m_map.extent.xmax,m_map.extent.ymin); pnt = m_map.toScreen(mapPnt); m_stateLabel.x = pnt.x-150; m_stateLabel.y = pnt.y-16; } public function set map(map:Map) : void { m_map = map; m_map.addEventListener(MouseEvent.MOUSE_MOVE,mouseMoveHandler); m_map.addEventListener(ExtentEvent.EXTENT_CHANGE, extentChangeHandler); }// end function}}把这个控件添加到map上
var statusBar:ESRIStatusBar = new ESRIStatusBar();
IMapAware(statusBar).map = EsriMap;
EsriMap.addChild(statusBar);
放代码
- arcgis api for flex 高级主题(二) 自定义控件的开发
- arcgis api for flex 高级主题(一) esri tilemap 四叉树索引研究
- arcgis api for flex 开发入门(三)地图浏览控件的使用
- arcgis api for flex 开发入门(四)Darw控件的使用
- arcgis api for flex 开发入门(三)地图浏览控件的使用
- arcgis api for flex 开发入门(四)Darw控件的使用
- arcgis api for flex 开发入门(二)map 的创建
- arcgis api for flex 开发入门(二)map 的创建
- arcgis api for flex之二、开发环境配置
- ArcGIS.Server.9.3和ArcGIS API for Flex实现自己的Toc控件(三)
- ArcGis server api for flex widget的 理解--自定义组件。
- ArcGIS API for Flex (使用ArcGIS API for Flex 创建一个新的地图项目)
- arcgis api for flex 开发入门(一)环境搭建
- arcgis api for flex 开发入门(五)查询
- arcgis api for flex 开发入门(一)环境搭建
- arcgis api for flex 开发入门(一)环境搭建
- arcgis api for flex 开发入门(五)查询
- arcgis api for flex 开发入门(六)identify
- arcgis api for flex 开发入门(八)GP服务的使用
- arcgis api for flex 开发入门(九)webservices 的使用
- arcgis api for flex 高级主题(一) esri tilemap 四叉树索引研究
- android Handler解析
- 什么是功能区(Ribbon)
- arcgis api for flex 高级主题(二) 自定义控件的开发
- error: cout 不明确的符号
- ASP.NET内置对象
- linux 5个查找命令
- 【Android 开发】:UI控件之 Gallery 画廊控件的使用
- Qt设置中文字体
- 一个c++小程序--独立思考举一反三
- 爱情
- 魔板问题的分析与解答