arcgis api for flex 开发入门(七)Geometry service 的使用

简介:

arcgis api for flex 开发入门(七)Geometry service 的使用
Geometry service 顾名思义,就是提供针对几何层级的服务,比如说Project,  
Simplify , Buffer,Areas And Lengths , Lengths 等
详细信息可以到下面的地址去看一下
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/Geo
metryServer
这个网址发布了上面5个Geometry service。
下面我们就来讲解如何在你的flex 地图中使用Geometry service,我们拿最常用
buffer来做例子。
首先 定义一个GeometryService
<esri:GeometryService id="myGeometryService"        
url="http://sampleserver2.arcgisonline.com/ArcGIS/rest/services/Geometr
y/GeometryServer"/>
id 唯一标识了这个GeometryService,url指定了GeometryService的地址
和identify工具类似,要进行buffer操作我们先创建一个需要做buffer的几何,
然后定义一个BufferParameters ,然后执行buffer操作,最后将buffer的结果绘
制到GraphicsLayer上。
下面我们介绍一下BufferParameters参数的意义distances为buffer半径,
features 为需要做buffer的要素集合,unit为单位bufferSpatialReference为
buffer操作时的空间参照系。
设置完参数后,要添加buffer完成时间的EventListener,当buffer完成后我们就
可以处理这个buffer的结果了,如下面AS3脚本
               
var bufferParameters : BufferParameters = new BufferParameters();      
         bufferParameters.features = [point];               
bufferParameters.distances = [3000];               
bufferParameters.unit = BufferParameters.UNIT_METER;               
bufferParameters.bufferSpatialReference = new SpatialReference(         
                      02113);  myGeometryService.addEventListener
(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);         
      myGeometryService.buffer( bufferParameters );
关键的一点,bufferParameters.features参数设置的features 一定要有空间参
考系,不然buffer不成功。
其余的绘制操作,将结果绘制到GraphicsLayer上的操作和上一讲基本相同,就不
再讲了。
完整代码:

ContractedBlock.gif ExpandedBlockStart.gif Code
<?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"
    layout
="absolute"
    
>
     
<mx:Script>
        
<![CDATA[
            import com.esri.ags.Graphic;
            import com.esri.ags.events.DrawEvent;
            import com.esri.ags.events.IdentifyEvent;
            import com.esri.ags.geometry.Geometry;
            import com.esri.ags.symbol.Symbol;
            import com.esri.ags.toolbars.Draw;
              import com.esri.ags.SpatialReference;
            import com.esri.ags.events.GeometryServiceEvent;
            import com.esri.ags.tasks.BufferParameters;
            private function drawEndHandler(eventrawEvent):void
            {
                var geometry : Geometry = event.geometry;
                var myMapPoint:Graphic = new Graphic();
                myMapPoint.geometry = geometry;
    geometry.spatialReference = new 
SpatialReference(4016);
                var bufferParameters : BufferParameters = new 
BufferParameters();
                bufferParameters.features = [myMapPoint];
                bufferParameters.distances = [300000];
                bufferParameters.unit = BufferParameters.UNIT_METER;
                bufferParameters.bufferSpatialReference = new 
SpatialReference(102113);
                
                myGeometryService.addEventListener
(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
                myGeometryService.buffer( bufferParameters );
           }
                function bufferCompleteHandler( event : 
GeometryServiceEvent ) : void
                {
                    myGeometryService.removeEventListener
(GeometryServiceEvent.BUFFER_COMPLETE, bufferCompleteHandler);
                    for each ( var graphic : Graphic in event.graphics 
)
                    {
                        graphic.symbol = sfs;
                        myGraphicsLayer.add( graphic );
                    }
                }
           
        
]]>
    
</mx:Script>   
     
<esri:SimpleFillSymbol id="sfs" color="0xFF0000">
        
<esri:SimpleLineSymbol color="0x000000"/>
    
</esri:SimpleFillSymbol> 
    
<!-- Draw ToolBar -->  
    
<esriraw id="drawToolbar" map="{map}" 
graphicsLayer
="{myGraphicsLayer}" drawEnd="drawEndHandler(event)">
    
</esriraw>    
       
<esri:GeometryService id="myGeometryService"
        
url
="http://sampleserver2.arcgisonline.com/ArcGIS/rest/services/Geometr
y/GeometryServer"
/>    <mxanel  width="100%" height="100%">
       
<mx:Button label="buffer" click="drawToolbar.activate
(Draw.MAPPOINT)"
/>    
        
<esri:Map id="map" width="100%" height="100%">
            
<esri:ArcGISDynamicMapServiceLayer
                
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Special
ty/ESRI_StatesCitiesRivers_USA/MapServer"
 />
            
<esri:GraphicsLayer id="myGraphicsLayer"/>
        
</esri:Map>
</mxanel>
</mx:Application>

原文地址:http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=35667&extra=page%3D4%26amp%3Borderby%3Ddateline

 

 

本文转自温景良(Jason)博客园博客,原文链接:http://www.cnblogs.com/wenjl520/archive/2009/06/02/1494573.html,如需转载请自行联系原作者

相关文章
|
1月前
|
缓存 安全 测试技术
构建高效的RESTful API:后端开发的实践指南
【2月更文挑战第17天】在数字化转型的浪潮中,RESTful API已成为连接不同软件组件、实现数据交互的核心桥梁。本文将深入探讨如何构建一个高效、可扩展且安全的RESTful API,涉及设计原则、开发流程以及性能优化等关键方面。我们将透过实际案例,展示如何在保证简洁性和灵活性的同时,满足日益增长的业务需求和技术挑战。
|
1月前
|
API
uni-app 146朋友圈列表api开发
uni-app 146朋友圈列表api开发
18 0
|
15天前
|
前端开发 Java API
构建RESTful API:Java中的RESTful服务开发
【4月更文挑战第3天】本文介绍了在Java环境中构建RESTful API的重要性及方法。遵循REST原则,利用HTTP方法处理资源,实现CRUD操作。在Java中,常用框架如Spring MVC简化了RESTful服务开发,包括定义资源、设计表示层、实现CRUD、考虑安全性、文档和测试。通过Spring MVC示例展示了创建RESTful服务的步骤,强调了其在现代Web服务开发中的关键角色,有助于提升互操作性和用户体验。
构建RESTful API:Java中的RESTful服务开发
|
27天前
|
搜索推荐 API
Email API Service平台有哪些?3大API接口平台对比
本文对比了三个Email API Service:AokSend、Mailgun和Postmark。AokSend提供高效邮件服务,其API适用于营销和通知邮件;Mailgun的API灵活强大,支持多种语言;Postmark专注于Transactional邮件,API设计简洁。每个平台都提供详尽的文档和支持,用户可根据需求选择。
|
28天前
|
缓存 前端开发 API
构建高效可扩展的RESTful API:后端开发的最佳实践
【2月更文挑战第30天】 在现代Web应用和服务端架构中,RESTful API已成为连接前端与后端、实现服务间通信的重要接口。本文将探讨构建一个高效且可扩展的RESTful API的关键步骤和最佳实践,包括设计原则、性能优化、安全性考虑以及错误处理机制。通过这些实践,开发者可以确保API的健壮性、易用性和未来的可维护性。
|
1月前
|
API
uni-app 147我的朋友圈列表api开发
uni-app 147我的朋友圈列表api开发
12 0
|
1月前
|
API
uni-app 145评论朋友圈api开发(二)
uni-app 145评论朋友圈api开发(二)
14 0
|
1月前
|
API
uni-app 144评论朋友圈api开发(一)
uni-app 144评论朋友圈api开发(一)
18 1
|
1月前
|
API
uni-app 143点赞朋友圈api开发(二)
uni-app 143点赞朋友圈api开发(二)
18 0