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上的操作和上一讲基本相同,就不
再讲了。
完整代码:

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,如需转载请自行联系原作者

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

  1. arcgis api for flex 开发入门(九)webservices 的使用

    arcgis api for flex 开发入门(九)webservices 的使用 flex 本身对webservices有着良好的支持,我们可以调用互联网上的各种 webservices来结合es ...

  2. arcgis api for flex 开发入门(二)map 的创建

    arcgis api for flex 开发入门(二)map 的创建 在flex 中创建一个esri 的map ,你只需要使用<esri:Map>标签就可以轻松完成. 在<esri: ...

  3. arcgis api for flex 开发入门(五)查询

    在gis中,针对要素的查询是一个最基本的操作,也是最常用的操作之一. 下面我们介绍如何使用arcgis api for flex 来查询我们需要的东西. 要在arcgis api for flex中进 ...

  4. ArcGIS API for Silverlight开发入门

    ArcGIS API for Silverlight开发入门 你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我 都没关系.但你不能否认3G是一种趋势,最终我们每个人都 ...

  5. ArcGIS API for Silverlight开发入门准备

    原文:ArcGIS API for Silverlight开发入门准备 微软的Silverlight提供了跨浏览器和跨平台开发环境,在Web中可用于创建和展现富互联网应用(RIA,Rich Inter ...

  6. 13 ArcGIS API for JavaScript开发入门文档

    写在前面 这篇文章写在我用ArcGIS API for JavaScript(后面统称为"ArcGIS JS API")开发了两年项目后的某一天夜里.写这篇文章主要是两个目的吧,第 ...

  7. ArcGIS API for Silverlight开发入门(2):一个基础地图实例

    这节在一个地图实例的基础上,来对Silverlight API中的一些基本概念做一个总体了解,顺便熟悉一下Silverlight的开发知识.         点击这里,直接看效果. 下载 (722.0 ...

  8. ArcGis api配合vue开发入门系列(二)距离以及面积的测量

    正文 首先自定义个工具栏,包括测量距离与测量面积的工具以及地图漫游. 图标的话是用的iconfont.我是把这个工具单独写在一个组件里面,这个组件里面里面会用到一些操作地图的方法,我在map这个组件里 ...

  9. [转]ArcGIS.Server.9.3和ArcGIS API for Flex实现Query查询定位中心功能(七)

    目的: 1.ArcGIS API for Flex实现Query查询定位中心功能,进行属性查图的功能,选择图层然后输入查询语句进行查询把查到的地理元素高亮显示同时在右边的Grid中显示查到的数据,然后 ...

最新文章

  1. 重走丝绸之路:海尔如何探索全球生活智慧?
  2. 理解并演示:Root Guard(根保护)
  3. 怎样把本软件是否注册的标志加在程序里?(注:不想加在数据库里)
  4. linux 查看内核属性,怎么查看linux操作系统
  5. 唤醒幻数据包禁用会怎么样_如何利用splashtop实现远程开机、远程唤醒电脑
  6. python2 md5库_python版本坑:md5例子(python2与python3中md5区别)
  7. 深入讲解防火墙的概念原理与实现
  8. C#之xml配置文件读写
  9. linux上运行tcpserver没反应,linux网络编程/tcp_server中server bind失败原因的调研
  10. 推荐系统中所需的概率论与数理统计知识
  11. Inceptor一次执行多个存储过程
  12. MongoDB Bulk write operation error on server duplicate key error问题解决
  13. 在线数据迁移,数字化时代的必修课——京东云数据迁移实践
  14. 私人珍藏的Chrome插件,吐血推荐
  15. ThinkPHP6 预防XSS攻击的一点小建议
  16. vc中 volatile 的作用
  17. 一名优秀的产品经理,需要了解的数据分析模型
  18. Python脚本下载今日头条视频 附加Android版本辅助下载器
  19. 程序猿reading 自我修炼
  20. 看懂这篇文章-你就懂了信息安全的密码学

热门文章

  1. POJ3169 Layout(差分约束)
  2. kd-Tree 【专题@AbandonZHANG】
  3. Professional ASP.NET 2.0之跨页提交-Cross Page Posting
  4. Spring Cloud分布式微服务系统中利用redssion实现分布式锁
  5. 使用ionic2开发一个登录功能
  6. Ceph分布式存储学习指南1.12 Lustre
  7. cout输出精确小数点
  8. Linq学习比较第2篇
  9. Python基础函数学习笔记(一)
  10. 爬虫项目——BS4练手(1)