arcgis api for flex 开发入门(四)Darw控件的使用

arcgis api for flex 在客户端提供了强大的绘制功能,可以通过简单的调用来

完成复杂的绘制工作,达到很好的交互效果,提供完美的用户体验,感觉不出来

是在web上操作。

下面我们就一起来实现绘制功能。

首先,我们需要定义一个draw 控件,使用<esriraw>标签来完成创建工作,如

下面的代码

<esriraw id="drawToolbar" map="{myMap}"

graphicsLayer="{myGraphicsLayer}" />

<esriraw >标签的map属性要绑定要你需要绘制的map上。graphicsLayer属性要

绑定到一个graphicsLayer上,所有绘制的结果都会添加到graphicsLayer上,

graphicsLayer的创建可以参考第二讲的内容。

控件创建好了,我们下面就可以调用这个控件的函数来完成绘制任务。

和上一讲一样,我们创建一个controlbar 来响应这些绘制的操作。

<mx:ControlBar horiz paddingBottom="0" paddingTop="0">

     <mx:Button label="点"   click="drawToolbar.activate

(Draw.MAPPOINT)"  />

     <mx:Button label="线"   click="drawToolbar.activate

(Draw.POLYLINE)"  />  

     <mx:Button label="流线"   click="drawToolbar.activate

(Draw.FREEHAND_POLYLINE)"  />

     <mx:Button label="矩形"   click="drawToolbar.activate

(Draw.EXTENT)"  />         

      <mx:Button label="多边形"   click="drawToolbar.activate

(Draw.POLYGON)"   />           

      <mx:Button label="流多边形"      click="drawToolbar.activate

(Draw.FREEHAND_POLYGON) "/>        

<mx:Button label="结束绘制"      click="drawToolbar.deactivate

() "/>  

      </mx:ControlBar>

在button 的click 响应函数里,我们只需要调用draw控件的activate函数来激活

当前绘制工具就可以了。

当你不想绘制的时候,调用deactivate函数就ok了,释放掉当前选择的绘制工具。

完整代码:

arcgis api for flex 开发入门(四)Darw控件的使用<转>_3darcgis api for flex 开发入门(四)Darw控件的使用<转>_xml_02Code
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    
xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:esri
="http://www.esri.com/2008/ags"
    pageTitle
="Using ArcGIS API for Flex to connect to a cached ArcGIS 
Online service"

    styleName
="plain">
  
<esri:Draw id="drawToolbar" map="{myMap}" 
graphicsLayer
="{myGraphicsLayer}" />
    
<esri:SpatialReference id="sr" wkid="4326"/>
     
<mx:ControlBar horizontalGap="0" paddingBottom="0" paddingTop="0"> 
     
<mx:Button label="点"   click="drawToolbar.activate
(Draw.MAPPOINT)"
  />
     
<mx:Button label="线"   click="drawToolbar.activate
(Draw.POLYLINE)"
  />  
     
<mx:Button label="流线"   click="drawToolbar.activate
(Draw.FREEHAND_POLYLINE)"
  /> 
     
<mx:Button label="矩形"   click="drawToolbar.activate
(Draw.EXTENT)"
  />         
      
<mx:Button label="多边形"   click="drawToolbar.activate
(Draw.POLYGON)"
   />           
      
<mx:Button label="流多边形"      click="drawToolbar.activate
(Draw.FREEHAND_POLYGON) "
/>        
<mx:Button label="结束绘制"      click="drawToolbar.deactivate
() "
/>  
      
</mx:ControlBar>
    
<esri:Map crosshairVisible="true" id = "myMap">
        
<esri:extent>
  
<esri:Extent  id = "esriMapExtent" xmin="116" 
ymin
="39.5" xmax="116.5" ymax="40.5"/>
  
</esri:extent>
        
<esri:ArcGISTiledMapServiceLayer
            
url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap
_World_2D/MapServer"
 />
     
<esri:GraphicsLayer id="myGraphicsLayer" 
spatialReference
="{sr}"/>
    
</esri:Map>
</mx:Application>