建筑网站建设,网站建设会犯法吗,17网站一起做网店好不好,做网站需要购买服务器吗作者#xff1a;Flyingis 本文严禁用于商业目的#xff0c;如需转载请注明作者及原文链接#xff0c;其他疑问请联系#xff1a;dev.vip#gmail.com 在ArcGIS Flex API中探索Flex使用是一种不错的学习方法#xff0c;可以相互辅助理解ArcGIS Flex API和Flex#… 作者Flyingis 本文严禁用于商业目的如需转载请注明作者及原文链接其他疑问请联系dev.vip#gmail.com 在ArcGIS Flex API中探索Flex使用是一种不错的学习方法可以相互辅助理解ArcGIS Flex API和Flex这两天重新翻阅了一些官方资料写一点小结从之前的一篇事件开始。 ArcGIS Flex API是基于Flex API的一个开发库开发之前需要导入agslib.swc根据WebGIS所需的功能可以想到事件是用户和地图进行交互的基础没有丰富的事件交互机制就很难为用户提供完整的WebGIS应用体验如果换成是自己去设计ArcGIS Flex API我们会从哪些功能需求入手 点击图层的地理要素进行查询鼠标移动到查询图层的地理要素上方异步弹出该要素基本信息窗口。没错这些都是WebGIS的基本需求那么通过一个sample看在ArcGIS Flex API如何使用事件。 Code?xml version1.0 encodingutf-8?mx:Application xmlns:mxhttp://www.adobe.com/2006/mxml pageTitleMap Click (but not on pan zoom) xmlns:esrihttp://www.esri.com/2008/ags layoutabsolute mx:Script ![CDATA[/** * Problem: You want to capture a click on the map, but not a pan or other mouse navigation actions. * Solution: Use mouseDown and panStart instead of the click property. */ import mx.controls.Button; import mx.controls.Text; import com.esri.ags.geometry.MapPoint; import com.esri.ags.events.PanEvent; private function mouseDownHandler(event:MouseEvent):void { if (!event.shiftKey) { myMap.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); } } private function panStartHandler(event:PanEvent):void { myMap.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); } private function mouseUpHandler(event:MouseEvent):void { myMap.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler); var mapPoint:MapPoint myMap.toMapFromStage(event.stageX, event.stageY); myMap.infoWindow.label You clicked here; myMap.infoWindow.show( mapPoint ); // Show the click } ]] /mx:Script esri:Map idmyMap mouseDownmouseDownHandler(event) panStartpanStartHandler(event) esri:ArcGISTiledMapServiceLayer urlhttp://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer/ /esri:Map/mx:Application PanEvent是ArcGIS Flex API中自定义的事件继承了flash.events.Event上面例子中所有事件的管理通过addEventListener和 removeEventListenser两个方法实现并且通过鼠标对地图的点击动作的分解实现在鼠标点击不同阶段的事件响应属性信息的获取在 MouseUp阶段toMapFromStage实现屏幕坐标到地图坐标的转换并将结果显示在infoWindow中。 具体的组件中ArcGISTiledMapServiceLayer和ArcGIS Javascript API中的功能相同将缓存好的地图服务添加到页面上esri是一个标识符在mxml页面最上方xmlns:esrihttp://www.esri.com/2008/ags申明用以在mxml中使用已定义好的组件。 ArcGIS Flex API Events Demo包含了常用的一些事件可以作为参考学习。从下面例子可以了解到图层加载、图层添加删除、地图放大缩小、地图平移等都被ArcGIS Flex API Events进行了封装加上原有的鼠标事件就可以基本满足WebGIS应用要求了。 Code?xml version1.0 encodingutf-8?mx:Application xmlns:mxhttp://www.adobe.com/2006/mxml xmlns:esrihttp://www.esri.com/2008/ags pageTitleEvent handling layoutabsolute creationCompleteonApplicationCreationComplete() mx:Script ![CDATA[ import flash.geom.Point; import com.esri.ags.events.LayerEvent; import com.esri.ags.events.ExtentEvent; import com.esri.ags.events.MapEvent; import com.esri.ags.events.PanEvent; import com.esri.ags.events.ZoomEvent; import com.esri.ags.geometry.MapPoint; import mx.events.FlexEvent; [Bindable] private var mapCoordX : Number 0; [Bindable] private var mapCoordY : Number 0; [Bindable] private var pixelCoordX : Number 0; [Bindable] private var pixelCoordY : Number 0; private function onMouseMove( event : MouseEvent ) : void { if (my Map.loaded) { var mapPoint : MapPoint myMap.toMapFromStage(event.stageX, event.stageY); mapCoordX mapPoint.x; mapCoordY mapPoint.y; var mapLocalPixelPoint : Point myMap.globalToLocal( new Point(event.stageX, event.stageY) ); pixelCoordX mapLocalPixelPoint.x; pixelCoordY mapLocalPixelPoint.y; } } public function onApplicationCreationComplete():void { // Map Navigation Events myMap.addEventListener(ExtentEvent.EXTENT_CHANGE, logExtentEvent); myMap.addEventListener(PanEvent.PAN_START, logPanEvent); myMap.addEventListener(PanEvent.PAN_UPDATE, logPanEvent); myMap.addEventListener(PanEvent.PAN_END, logPanEvent); myMap.addEventListener(ZoomEvent.ZOOM_START, logZoomEvent); myMap.addEventListener(ZoomEvent.ZOOM_UPDATE, logZoomEvent); myMap.addEventListener(ZoomEvent.ZOOM_END, logZoomEvent); myMap.addEventListener(MouseEvent.CLICK, logMouseEvent); myMap.addEventListener(MouseEvent.DOUBLE_CLICK, logMouseEvent); myMap.addEventListener(MouseEvent.MOUSE_WHEEL, logMouseEvent); myMap.addEventListener(MapEvent.LAYER_ADD, logMapEvent); myMap.addEventListener(MapEvent.LAYER_REORDER, logMapEvent); myMap.addEventListener(MapEvent.LOAD, logMapEvent); aims.addEventListener(LayerEvent.LOAD, logLayerEvent); log.text 2. Application creation complete\n log.text; } public function onMapCreationComplete():void { myMap.infoWindow.addEventListener(FlexEvent.HIDE, logInfoWindowFlexEvent); myMap.infoWindow.label Clicking the x will \nthrow hide event; // put the infoWindow in the middle of the map var myPoint:MapPoint new MapPoint(0,0); myMap.infoWindow.show(myPoint); log.text 1. Map creation complete\n log.text; } public function logInfoWindowEvent(event:Event):void { log.text * Event (infoWindow): event.type \n log.text; } public function logInfoWindowFlexEvent(event:FlexEvent):void { log.text * FlexEvent (infoWindow): event.type \n log.text; } public function logMouseEvent(event:MouseEvent):void { log.text * MouseEvent: event.type \n log.text; } public function logExtentEvent(event:ExtentEvent):void { log.text * ExtentEvent: event.type \n log.text; } public function logPanEvent(event:PanEvent):void { log.text * PanEvent: event.type \n log.text; } public function logZoomEvent(event:ZoomEvent):void { log.text * ZoomEvent: event.type \n log.text; } public function logMapEvent(event:MapEvent):void { log.text * MapEvent: event.type \n log.text; } public function logLayerEvent(event:LayerEvent):void { log.text * LayerEvent: event.type \n log.text; } ]] /mx:Script mx:HDividedBox width100% height100% esri:Map idmyMap mouseMoveonMouseMove(event) crosshairVisibletrue creationCompleteonMapCreationComplete() esri:extent esri:Extent xmin-45 ymin-45 xmax45 ymax45 esri:SpatialReference wkid4326/ /esri:Extent /esri:extent esri:ArcIMSMapServiceLayer idaims creationCompletelog.textMapLayer creation complete\nlog.text; loadlog.textMapLayer loaded\nlog.text; serviceHosthttp://www.geographynetwork.com serviceNameESRI_Time / esri:GraphicsLayer visibletrue creationCompletelog.textGraphicLayer creation complete\nlog.text; loadlog.textGraphicLayer loaded\nlog.text; esri:Graphic toolTip-70.488281,41.660156 visibletrue esri:geometry esri:MapPoint x-70.488281 y41.660156 spatialReference{new SpatialReference(4326)}/ /esri:geometry esri:symbol esri:SimpleMarkerSymbol idsymbol color0xFF0000 size10 alpha0.75/ /esri:symbol /esri:Graphic /esri:GraphicsLayer /esri:Map mx:Panel layoutvertical height100% mx:Text width250 textYou can listen to many different events both our Map Navigation specific events, as well as general Flex events./ mx:TextArea width100% height100% idlog/ mx:HBox borderStylesolid mx:Label textPixel x: {pixelCoordX} paddingBottom0/ mx:Label textPixel y: {pixelCoordY} paddingBottom0/ /mx:HBox mx:HBox borderStylesolid mx:Label textMap x: {mapCoordX.toFixed(4)} paddingBottom0/ mx:Label textMap y: {mapCoordY.toFixed(4)} paddingBottom0/ /mx:HBox mx:Label textspatial reference: {myMap.spatialReference.wkid}/ /mx:Panel /mx:HDividedBox/mx:Application转载于:https://www.cnblogs.com/flyingis/archive/2008/12/07/1349751.html