杰瑞科技汇

ArcGIS for Flex教程如何快速入门?

重要声明:ArcGIS API for Flex 已被官方废弃

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

ArcGIS for Flex教程如何快速入门?-图1
(图片来源网络,侵删)

为什么不再推荐使用 Flex?

  1. 技术过时:Adobe Flash 和 Flex 技术本身已经逐渐被淘汰,现代 Web 开发的主流是 HTML5、JavaScript 和 CSS3。
  2. 性能和兼容性:基于 Flex 的应用在移动端和现代浏览器上的兼容性和性能不如 JavaScript 应用。
  3. 社区支持:官方社区和开发者资源都已转向 JavaScript API,遇到问题时很难找到最新的解决方案。
  • 如果您需要维护一个旧的 Flex 项目,这份教程可以帮助您理解其基本原理和代码结构。
  • 如果您正在开始一个新的 Web GIS 开发项目强烈建议您直接学习 ArcGIS API for JavaScript,它更现代、功能更强大、社区更活跃,并且是业界标准。

ArcGIS API for Flex 教程(针对旧项目维护)

如果您仍然需要使用它,以下是学习该 API 的核心概念、步骤和资源。

环境准备

  1. 安装 Flex SDK

    • 您需要从 Adobe 官方网站下载并安装 Adobe Flex SDK,推荐使用较新的稳定版本,4.6。
    • 将 Flex SDK 的路径添加到系统的环境变量 Path 中,以便命令行工具可以识别。
  2. 安装 Flex Builder (Flash Builder)

    ArcGIS for Flex教程如何快速入门?-图2
    (图片来源网络,侵删)
    • 这是最常用的 Flex 开发 IDE(集成开发环境),现在已更名为 Adobe Flash Builder,它提供了强大的代码提示、调试和可视化界面设计功能。
    • 您可以下载一个试用版或旧版本。
  3. 获取 ArcGIS API for Flex 库

    • 从 Esri 官网下载 API 库,通常包含一个 .swc 文件(编译好的库文件)和一些示例文件。
    • 将下载的 ArcGIS.swc 文件复制到您的 Flash Builder 项目的 libs 文件夹中。

第一个地图应用:Hello World

这是创建一个最基本地图应用的步骤。

步骤 1:创建 Flex 项目

  1. 打开 Flash Builder。
  2. 选择 File -> New -> Flex Project
  3. 输入项目名称(MyFirstMap)。
  4. 确保选中了 "Build Adobe AIR application"(如果需要桌面应用)或 "Create HTML wrapper file"(如果需要在浏览器中运行)。
  5. 点击 Finish

步骤 2:添加 ArcGIS 库

ArcGIS for Flex教程如何快速入门?-图3
(图片来源网络,侵删)
  1. 在项目资源管理器中,找到 libs 文件夹。
  2. 将之前下载的 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 进行缓冲区分析、投影
分享:
扫描分享到社交APP
上一篇
下一篇