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);
    
时间: 2024-10-17 22:04:22

ArcGIS API For Flex(设置地图空间范围)的相关文章

arcgis api for flex之专题图制作(饼状图,柱状图等)

最近公司给我一个任务,就是利用arcgis api for flex实现在地图上点(业务数据)直接显示饼状图以及柱状图的专题图制作,而不是通过点击点显示气泡窗口的形式来实现,这个公司已经实现了. 经过一段时间的摸索,参照一些网上资源,目前大概弄出来了,里面还有待完善的地方的. 效果图如下: (1)Chart.mxml,主要的展示地图专题图效果的页面 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

南沙政府应急系统之GIS一张图(arcgis api for flex)讲解(一)GIS一张图的系统开发环境以及flexviewer框架

系统的GIS功能实现是基于arcgis api for flex,首先附上系统的主界面图,接下来的是对主界面的模块功能详细讲解: 一.GIS环境软件安装 (1)arcgis desktop的安装,要是不想对地图数据进行样式配置或者数据加工的话,这步可以跳过不用安装,详细的安装步骤见这里: (2)arcgis server的安装,这个是必须的,用来发布webgis的地图服务,比如地图基础服务,路径分析的网络服务,地理编码服务等等,详细的安装步骤见这里: (3)arcsde直连创建地理企业数据库,为

ArcGIS API for Silverlight实现地图测距功能

原文:ArcGIS API for Silverlight实现地图测距功能 问题:如何实现地图测距功能? 地图工具栏 <Grid x:Name="gToolMenu" Height="100" VerticalAlignment="Top" Opacity="0.8" HorizontalAlignment="Right" Width="467"> <Rectangle

ArcGIS Api For Flex 动态画点和线

<?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:supportCl

南沙政府应急系统之GIS一张图(arcgis api for flex)讲解(三)显示地图坐标系模块

config.xml文件的配置如下: 1 2 <widget left="3" bottom="3" config="widgets/Coordinate/CoordinateWidget.xml" url="widgets/Coordinate/CoordinateWidget.swf" /> 源代码目录如下: 地图坐标系模块的源代码原理解析,详细的代码在下载的开源flexviewer自带的: (1)Coordi

天津政府应急系统之GIS一张图(arcgis api for flex)解说(三)显示地图坐标系模块

config.xml文件的配置例如以下: 1 2 <widget left="3" bottom="3" config="widgets/Coordinate/CoordinateWidget.xml" url="widgets/Coordinate/CoordinateWidget.swf" /> 源码文件夹例如以下: 地图坐标系模块的源码原理解析,具体的代码在下载的开源flexviewer自带的: (1)Coo

南沙政府应急系统之GIS一张图(arcgis api for flex)讲解(四)地图导航控件模块

config.xml文件的配置如下: <widget left="10" top="50" config="widgets/Navigation/NavigationWidget.xml" url="widgets/Navigation/NavigationWidget.swf" /> 源代码目录如下: 地图导航控件模块的源代码原理解析,详细的代码在下载的开源flexviewer自带的: 1.地图缩小 2.地图放大

ArcGIS API for Flex (使用ArcGIS API for Flex 创建一个新的地图项目)

参考官方:https://developers.arcgis.com/flex/guide/getting-started.htmhttps://developers.arcgis.com/flex/guide/tutorial-adding-a-map-with-layers.htm 新建Flex工程 下载并解压缩ArcGIS API Flex ZIP文件.这个文件包含Flex的ArcGIS API libs库(.swc).语言环境.皮肤包文件 在 Flash Builder中, 选择 Fil

南沙政府应急系统之GIS一张图(arcgis api for flex)讲解(六)地图搜索模块

config.xml文件的配置如下: 1 <widget label="地图搜索" icon="assets/images/emergency_resource_over.png" 2 config="widgets/Search/SearchWidget.xml" url="widgets/Search/SearchWidget.swf" /> 源代码目录如下: 地图搜索模块的源代码原理解析,详细的代码在下载的开