ArcGIS Flex API 中的 Flex 技術(三)–非同步特徵

來源:互聯網
上載者:User

 

    作者:Flyingis
    Flex天生具備非同步呼叫的能力,使得Flex能夠很好的適應webgis應用中的常用功能,在ArcGIS Flex API中,最典型的莫過於地理要素資訊的動態顯示,例如對於關注的地理要素,當滑鼠移動上去後顯示出該要素的基本資料,ArcGIS Flex API Demo的"Show InfoWindow on mouse hover"就是這樣的例子。

Code
<![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中使用回呼函數的方法,如之前寫過的事件監聽:

Code
<?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在資料互動上同步,在畫面上的動作還是有非同步存在的,對於地圖互動來說,還是非同步設計更貼近實際應用。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.