ArcGIS API For Flex(设置地图空间范围)

 

ArcGIS API For Flex(设置地图空间范围)

分类: Arcgis Api For Flex ArcGIS   23人阅读  评论(0)  收藏  举报

目录(?)[+]

引用地址:https://developers.arcgis.com/flex/guide/using-extent.htm 

本教程描述几种方式设置地图的范围以及如何取得用于其他操作程度。

Setting an extent

设置一个初始化的地图范围区别于默认。图1是默认,图2是设置后的,可以使用extent属性或Extent类

使用 extent 属性

在Map中设置extent属性,参考下面代码片段
第一步:插入  <esri:Extent>  标记,指定ID 和 coordinates坐标.
  第二步:添加 <esri:ArcGISDynamicMapServiceLayer>标记 .

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"  
  3.                xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:esri="http://www.esri.com/2008/ags">  
  4.       
  5.     <fx:Declarations>  
  6.         <esri:SpatialReference id="wgs" wkid="4326"/>  
  7.         <esri:Extent id="extentOfKansas" spatialReference="{wgs}" xmax="-94" xmin="-103" ymax="41" ymin="36"/>  
  8.     </fx:Declarations>  
  9.   
  10.     <esri:Map id="myMap" extent="{extentOfKansas}">  
  11.         <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>  
  12.         <esri:ArcGISDynamicMapServiceLayer id="myLayer"  
  13.                     url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer"/>  
  14.     </esri:Map>  
  15.   
  16. </s:Application>  
另外一种方式,使用Extent类

添加 <esri:SpatialReference>  标记,指定坐标点wkid 设置 ID.

插入 <esri:extent>  标记,指定ID 和 coordinates坐标.

添加 <ArcGISTiledMapServiceLayer> 标记. 

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"  
  3.                xmlns:s="library://ns.adobe.com/flex/spark"  
  4.                xmlns:mx="library://ns.adobe.com/flex/mx"  
  5.                xmlns:esri="http://www.esri.com/2008/ags">  
  6.       
  7.     <fx:Declarations>  
  8.         <esri:SpatialReference id="wgs" wkid="4326"/>  
  9.     </fx:Declarations>  
  10.       
  11.     <esri:Map id="myMap">  
  12.         <esri:extent>  
  13.             <esri:Extent spatialReference="{wgs}" xmax="-94" xmin="-103" ymax="41" ymin="36"/>  
  14.         </esri:extent>  
  15.         <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>  
  16.         <esri:ArcGISDynamicMapServiceLayer id="myLayer"  
  17.                     url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer"/>  
  18.     </esri:Map>  
  19. </s:Application>  
或者以下方式

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"  
  3.                xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:esri="http://www.esri.com/2008/ags">  
  4.       
  5.     <esri:Map id="myMap">  
  6.         <esri:extent>  
  7.             <!-- 地图的当前视图对应的地理坐标范围 -->  
  8.             <esri:Extent xmax="-6815000" xmin="-14298000" ymax="7117000" ymin="2748000">  
  9.                 <esri:SpatialReference wkid="102100"/>  
  10.             </esri:Extent>  
  11.         </esri:extent>  
  12.           
  13.         <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer"/>  
  14.     </esri:Map>  
  15.       
  16. </s:Application>  

Setting an extent when using multiple services

当多个服务使用同一个范围时

在某些情况下,你可能想要设置一个层的空间范围,而不是初始化层或底图,为此,在所需的层上设置地图的extent属性,在下面代码中我们使用到了2个层,第一个是底图(ArcGIS Online world extent)、第二个是凯萨斯州的层layer (the state of Kansas)

设置凯萨斯州的extent,添加一个load属性,然后再在map上设置extent(范围)

load="myMap.extent = myKansasLayer.fullExtent"

当创建地图时,这个load属性被加载, 然后在Kansas layer(凯萨斯州)层中设置 全局的extent . 下面的代码片段使用 fullExtent来设置map extent

[html]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"  
  3.                xmlns:s="library://ns.adobe.com/flex/spark"  
  4.                xmlns:mx="library://ns.adobe.com/flex/mx"  
  5.                xmlns:esri="http://www.esri.com/2008/ags">  
  6.       
  7.     <esri:Map id="myMap">  
  8.         <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>  
  9.         <esri:ArcGISDynamicMapServiceLayer id="myKansasLayer" load="myMap.extent = myKansasLayer.fullExtent"  
  10.                                            url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer"/>  
  11.     </esri:Map>  
  12. </s:Application>  


设置 initial extent代替 full extent,使用 myKansasLayer.initialExtent

Getting the current extent

取得当前地图上的extent 使用 extent 属性.

Listening to extent changes

监听extent的变化,当用户在地图上每次拖动地图或缩放地图时,会触发一个  ExtentEvent  事件,你可以添加一个事件监听,使用MXML或ActionScript,用于通知每次extent的变化,参考下面的例子

  • MXML 示例:

    <esri:Map id="myMap" extentChange="displayExtent()">
      <esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer" />
    </esri:Map>
    
  • ActionScript 示例:

    myMap.addEventListener(ExtentEvent.EXTENT_CHANGE, extentChangeHandler);
    

http://blog.csdn.net/xiaokui_wingfly/article/details/38982213
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值