许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  ArcGIS API for Flex:设置地图空间范围的方法

ArcGIS API for Flex:设置地图空间范围的方法

阅读数 15
点赞 0
article_banner

原文地址:ArcGIS API For Flex —— 设置地图空间范围

引用地址: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>标记.

<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"			   xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:esri="http://www.esri.com/2008/ags">		<fx:Declarations>		<esri:SpatialReference id="wgs" wkid="4326"/>		<esri:Extent id="extentOfKansas" spatialReference="{wgs}" xmax="-94" xmin="-103" ymax="41" ymin="36"/>	</fx:Declarations> 	<esri:Map id="myMap" extent="{extentOfKansas}">		<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>		<esri:ArcGISDynamicMapServiceLayer id="myLayer"					url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer"/>	</esri:Map> </s:Application>另外一种方式,使用Extent类 
  


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

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

添加 <ArcGISTiledMapServiceLayer> 标记.


<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"			   xmlns:s="library://ns.adobe.com/flex/spark"			   xmlns:mx="library://ns.adobe.com/flex/mx"			   xmlns:esri="http://www.esri.com/2008/ags">		<fx:Declarations>		<esri:SpatialReference id="wgs" wkid="4326"/>	</fx:Declarations>		<esri:Map id="myMap">		<esri:extent>			<esri:Extent spatialReference="{wgs}" xmax="-94" xmin="-103" ymax="41" ymin="36"/>		</esri:extent>		<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>		<esri:ArcGISDynamicMapServiceLayer id="myLayer"					url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer"/>	</esri:Map></s:Application>或者以下方式 
  
<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"			   xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:esri="http://www.esri.com/2008/ags">		<esri:Map id="myMap">		<esri:extent>			<!-- 地图的当前视图对应的地理坐标范围 -->			<esri:Extent xmax="-6815000" xmin="-14298000" ymax="7117000" ymin="2748000">				<esri:SpatialReference wkid="102100"/>			</esri:Extent>		</esri:extent>				<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/World_Physical_Map/MapServer"/>	</esri:Map>	</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


<?xml version="1.0" encoding="utf-8"?><s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"			   xmlns:s="library://ns.adobe.com/flex/spark"			   xmlns:mx="library://ns.adobe.com/flex/mx"			   xmlns:esri="http://www.esri.com/2008/ags">		<esri:Map id="myMap">		<esri:ArcGISTiledMapServiceLayer url="http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer"/>		<esri:ArcGISDynamicMapServiceLayer id="myKansasLayer" load="myMap.extent = myKansasLayer.fullExtent"										   url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer"/>	</esri:Map></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); 一键获取完整项目代码


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删


相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空