重要声明:ArcGIS API for Flex 已被官方废弃
在开始学习之前,最重要的一点是:Esri(ArcGIS的开发公司)已经不再维护和更新 ArcGIS API for Flex,官方自 2025 年左右就停止了对其的更新,并推荐开发者迁移到 ArcGIS API for JavaScript。

为什么不再推荐使用 Flex?
- 技术过时:Adobe Flash 和 Flex 技术本身已经逐渐被淘汰,现代 Web 开发的主流是 HTML5、JavaScript 和 CSS3。
- 性能和兼容性:基于 Flex 的应用在移动端和现代浏览器上的兼容性和性能不如 JavaScript 应用。
- 社区支持:官方社区和开发者资源都已转向 JavaScript API,遇到问题时很难找到最新的解决方案。
- 如果您需要维护一个旧的 Flex 项目,这份教程可以帮助您理解其基本原理和代码结构。
- 如果您正在开始一个新的 Web GIS 开发项目,强烈建议您直接学习 ArcGIS API for JavaScript,它更现代、功能更强大、社区更活跃,并且是业界标准。
ArcGIS API for Flex 教程(针对旧项目维护)
如果您仍然需要使用它,以下是学习该 API 的核心概念、步骤和资源。
环境准备
-
安装 Flex SDK:
- 您需要从 Adobe 官方网站下载并安装 Adobe Flex SDK,推荐使用较新的稳定版本,4.6。
- 将 Flex SDK 的路径添加到系统的环境变量
Path中,以便命令行工具可以识别。
-
安装 Flex Builder (Flash Builder):
(图片来源网络,侵删)- 这是最常用的 Flex 开发 IDE(集成开发环境),现在已更名为 Adobe Flash Builder,它提供了强大的代码提示、调试和可视化界面设计功能。
- 您可以下载一个试用版或旧版本。
-
获取 ArcGIS API for Flex 库:
- 从 Esri 官网下载 API 库,通常包含一个
.swc文件(编译好的库文件)和一些示例文件。 - 将下载的
ArcGIS.swc文件复制到您的 Flash Builder 项目的libs文件夹中。
- 从 Esri 官网下载 API 库,通常包含一个
第一个地图应用:Hello World
这是创建一个最基本地图应用的步骤。
步骤 1:创建 Flex 项目
- 打开 Flash Builder。
- 选择
File->New->Flex Project。 - 输入项目名称(
MyFirstMap)。 - 确保选中了 "Build Adobe AIR application"(如果需要桌面应用)或 "Create HTML wrapper file"(如果需要在浏览器中运行)。
- 点击
Finish。
步骤 2:添加 ArcGIS 库

- 在项目资源管理器中,找到
libs文件夹。 - 将之前下载的
ArcGIS.swc文件拖拽到libs文件夹中,Flash Builder 会自动将其添加到项目的构建路径中。
步骤 3:编写 MXML 代码
打开 MyFirstMap.mxml 文件,将默认代码替换为以下代码:
<?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:esri="http://www.esri.com/2008/ags"
xmlns:mx="library://ns.adobe.com/flex/mx"
pageTitle="My First Map">
<!-- 定义一个地图容器 -->
<esri:Map id="myMap" width="100%" height="100%">
<!-- 添加一个底图图层 -->
<esri:ArcGISTiledMapServiceLayer
url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"/>
</esri:Map>
</s:Application>
代码解释:
xmlns:esri="http://www.esri.com/2008/ags":这是声明 ArcGIS API 的命名空间,所有 ArcGIS 组件都以esri:开头。<esri:Map>:这是地图的主容器,width="100%" height="100%"让它填满整个应用程序窗口。<esri:ArcGISTiledMapServiceLayer>:这是一个瓦片图层,用于加载底图。url属性指向 Esri 提供的一个在线地图服务(世界地形图)。
步骤 4:运行程序 点击工具栏上的 "Run" 按钮(绿色播放图标),如果一切配置正确,您应该能看到一个显示世界地形图的浏览器窗口或 AIR 应用程序。
核心组件与功能
一个完整的 GIS 应用通常包含地图、图层、控件和一些交互功能。
图层
地图由多个图层叠加而成,ArcGIS API for Flex 支持多种图层类型:
ArcGISTiledMapServiceLayer:预渲染的瓦片图层,适合作为底图(如街道图、卫星图),加载速度快,但不能修改样式。ArcGISDynamicMapServiceLayer:动态图层,服务器可以根据请求动态渲染地图,可以控制图层的显示/隐藏,并支持查询。FeatureLayer:要素图层,用于显示和操作矢量数据(点、线、面),它可以连接到 Feature Service,支持查询、编辑、要素选择等功能。GraphicsLayer:图形图层,用于在客户端临时绘制图形(如标记、线、面),这些图形不会保存到服务器。
示例:添加一个动态图层和一个图形图层
<esri:Map>
<esri:ArcGISTiledMapServiceLayer url="..."/>
<esri:ArcGISDynamicMapServiceLayer
url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer"/>
<esri:GraphicsLayer id="myGraphicsLayer"/>
</esri:Map>
控件
控件用于增强用户体验,如缩放、比例尺等。
ZoomSlider:缩放滑块。Navigation:平移和缩放控件(鼠标拖拽、滚轮缩放)。OverviewMap:鹰眼图。Scalebar:比例尺。
示例:添加缩放滑块和导航控件
<s:Application>
<esri:Map id="myMap">
<!-- ... 地图图层 ... -->
</esri:Map>
<!-- 添加一个缩放滑块,并绑定到地图 -->
<esri:ZoomSlider map="{myMap}" horizontalAlign="right" verticalAlign="bottom"/>
<!-- 添加一个导航控件 -->
<esri:Navigation map="{myMap}" horizontalAlign="left" verticalAlign="top"/>
</s:Application>
事件处理
用户与地图交互(如点击、缩放)时会触发事件,您可以通过编写 ActionScript 代码来响应这些事件。
示例:点击地图添加一个标记
<?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:esri="http://www.esri.com/2008/ags"
pageTitle="Click to Add Marker">
<fx:Script>
<![CDATA[
import com.esri.ags.Graphic;
import com.esri.ags.geometry.MapPoint;
import com.esri.ags.symbols.SimpleMarkerSymbol;
// 地图点击事件处理函数
private function onMapClick(event:MapMouseEvent):void {
// 创建一个地图点
var point:MapPoint = event.mapPoint;
// 创建一个简单的标记符号
var symbol:SimpleMarkerSymbol = new SimpleMarkerSymbol();
symbol.color = 0xFF0000; // 红色
symbol.size = 12;
// 创建一个图形对象
var graphic:Graphic = new Graphic(point, symbol);
// 将图形添加到地图的默认图形图层中
myMap.addGraphic(graphic);
}
]]>
</fx:Script>
<esri:Map id="myMap" click="onMapClick(event)">
<esri:ArcGISTiledMapServiceLayer
url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer"/>
</esri:Map>
</s:Application>
进阶功能
- 查询:使用
QueryTask向服务发送查询请求,获取满足条件的要素。 - 几何服务:使用
GeometryService进行缓冲区分析、投影
