ArcGIS Flex API 中的 Flex 技术(三)--异步特征-阿里云开发者社区

开发者社区> IoT> 正文
登录阅读全文

ArcGIS Flex API 中的 Flex 技术(三)--异步特征

简介:

    Flex天生具备异步调用的能力,使得Flex能够很好的适应webgis应用中的常用功能,在ArcGIS Flex API中,最典型的莫过于地理要素信息的动态显示,例如对于关注的地理要素,当鼠标移动上去后显示出该要素的基本信息,ArcGIS Flex API Demo的"Show InfoWindow on mouse hover"就是这样的例子。
复制代码
ExpandedBlockStart.gifCode
<![CDATA[
    import com.esri.ags.geometry.MapPoint;
    import com.esri.ags.Graphic;
    private const m_content : InfoWindowRollOverContent 
= new InfoWindowRollOverContent();
            
    override protected 
function createChildren():void
    {
        super.createChildren();
        map.infoWindow.content 
= m_content;
        map.infoWindow.labelVisible 
= false;
        map.infoWindow.closeButtonVisible 
= false;
    }
            
    private 
function rollOverHandler( event : MouseEvent ) : void
    {
        const graphic : Graphic 
= Graphic( event.target );
        const mapPoint : MapPoint 
= MapPoint( graphic.geometry );
        m_content.lat 
= mapPoint.y.toFixed( 3 );
        m_content.lon 
= mapPoint.x.toFixed( 3 );
        map.infoWindow.show(mapPoint);              
    }
            
    private 
function rollOutHandler( event : MouseEvent ) : void
    {
        map.infoWindow.hide();
    }
]]
>
复制代码

    当鼠标移动到地理要素(点、线、面)上方时,会调用rollOverHandler方法,显示出该地理要素的x/y坐标,之后由rollOutHandler清除显示的结果,整个过程不会同步刷新所有地图。Flex异步调用的特性和单线程机制,使得我们经常会在Flex中使用回调函数的方法,如之前写过的事件监听:
复制代码
ExpandedBlockStart.gifCode
<?xml version="1.0"?>
<!-- events/SimpleEventHandler.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initApp();">
    
<mx:Script><![CDATA[
        import mx.controls.Alert;

        private function initApp():void {
            b1.addEventListener(MouseEvent.CLICK, myEventHandler);
        }

        private function myEventHandler(event:Event):void {
            Alert.show("An event occurred.");
        }
    ]]
></mx:Script>

    
<mx:Button id="b1" label="Click Me"/>
</mx:Application>
复制代码

    Flex中如果希望实现同步,可以考虑WebService Components,异步调用最初会让人想到是基于性能的一种设计,现在换成WebService似乎走向了另外一个极端,于是出现这样的设计:
    "在通过RemoteObject进行数据交互的时候触发invoke事件,把画面给锁住,result的时候解锁。"

    但这只是RemoteObject在数据交互上同步,在画面上的动作还是有异步存在的,对于地图交互来说,还是异步设计更贴近实际应用。

 本文转自Flyingis博客园博客,原文链接:http://www.cnblogs.com/flyingis/archive/2008/12/14/1354779.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
IoT
使用钉钉扫一扫加入圈子
+ 订阅

物联网软硬件开发者一站式基地

其他文章
最新文章
相关文章