范例代码 (SampleCode) 向导
在快速入门的基础上,我们现在可以进一步学习更丰富的地图功能了。在为用户提供的产品包中包含了所见及所得的 SampleCode,它向用户演示了如何利用 SuperMap iClient 8C for Flash 的各个接口实现相应的 GIS 功能,包括如何加载各种类型的地图图层和各种地理要素或非地理元素,如何使用地图浏览辅助控件,如何在地图上进行基础操作,以及如何获取 SuperMap iServer Java 服务器产品提供的服务功能。用户在学习过程中可以直接查看、复制示范代码,同时在每个功能中我们也添加了必要的说明,帮助用户快速掌握各个功能的使用。结合帮助文档中的开发指南,用户能够迅速的了解各功能接口,编写所需的应用程序。
图1 示范代码界面
在 SampleCode 中使用的服务器地址只作为示例使用,用户需根据自己的服务器地址进行设置。
如何使用
- 本地运行示范代码:
- 访问本机发布的服务:请确保本机上已安装对应的 SuperMap iServer 8C/2008 服务器产品;在启动服务之后,直接双击[SuperMap iClient 8C for Flash 产品包] samples/samplecode_*/samplecode/samplecode.html 即可。(其中 ‘*’ 号代表 ‘iServerJava2' 或 ’iServerJava8C')
- 访问非本机发布的服务:示范代码中默认的服务访问地址均为:localhost,用户若需访问其它非本机发布的服务,仅需修改 samplecode_*/samplecode 文件夹下的服务地址配置文件——mapUrlConfig.xml 中的服务地址,然后直接双击 samplecode_*/samplecode/samplecode.html 即可访问非本机发布的服务。使用此方法时请确保已在服务的根目录下([SuperMap iServer 8C 产品包]/webapps/ROOT 或 [SuperMap iServer Java 2008 产品包]\thirdparty\tomcat\webapps\ROOT)放置跨域文件 crossdomain.xml。
- 发布支持 SuperMap iServer 8C 服务的示范代码,通过浏览器访问:将示范代码整个文件夹(samplecode_iServerJava7C 文件夹) 拷贝至 [SuperMap iServer 8C 产品包]/webapps 文件夹中,并启动 SuperMap iServer 8C 服务。这样将示范代码以服务的形式发布出来,您现在就可以通过浏览器成功访问示范代码的页面了,地址为:http://发布服务的 IP : 端口号/samplecode_iServerJava7C/samplecode/samplecode.html。使用此方法时请确保已在服务的根目录下([SuperMap iServer 8C 产品包]/webapps/ROOT)放置跨域文件 crossdomain.xml。
- 发布支持 SuperMap iServer Java 2008 服务的示范代码,通过浏览器访问:将示范代码整个文件夹(samplecode_iServerJava2 文件夹)拷贝至 [SuperMap iServer Java 2008 安装目录]/thirdparty/tomcat/webapps 文件夹中;然后启动 SuperMap iServer Java 2008 服务。这样将示范代码以服务的形式发布出来,您现在就可以通过浏览器成功访问示范代码的页面了,地址为:http://发布服务的 IP : 端口号/samplecode_iServerJava2/samplecode/samplecode.html。使用此方法时请确保已在服务的根目录下([SuperMap iServer Java 2008 产品包]\thirdparty\tomcat\webapps\ROOT)放置跨域文件 crossdomain.xml。
- 迁移使用示范代码:示范代码中使用的数据都是 SuperMap 服务器产品包中的示范数据,如果您使用的数据与我们示范代码中使用的数据相同,则您复制示范代码之后,只需要将代码中有关服务器地址 url 的参数值修改为您的服务器地址就可以了,同时确认库文件的正确引用。如果您使用的数据与我们示范代码中的数据不一致,那么您可能不能正常运行部分代码。这是因为部分代码内部实现与实际地图图层或数据集或数据表属性字段有关,因此您复制示范代码后如果要正常运行,则不仅需要修改服务器地址,还必须修改代码中涉及到图层名、数据集名字或数据属性字段等与实际数据有关的参数。
如何为应用程序快速配置服务路径
介绍在samplecode中如何为应用程序快速配置服务路径,目的在于使您能在本地正常运行使用samplecode,并对服务路径的快速配置有一定的了解。下面将从配置文件、解析类和具体实例三部分为您介绍samplecode_iServerJava7C中服务路径的快速配置。
- 1.配置文件:
按照[SuperMap iClient 8C for Flash 产品包] samples/ samplecode_ iServerJava8C/下的readme.txt在Flash Builder 4 中完成samplecode_ iServerJava8C项目工程的添加。
展开项目结构,打开根目录下的mapUrlConfig.xml文件,可以看到该文件的各个节点信息,如下图2所示:
图2 配置文件节点
其中,节点url用于存放SuperMap iServer Java 8C发布的服务列表地址,默认为:http://localhost:8090/iserver/services;节点mapnames下各子节点为需要访问的地图名称标签。一般这两个节点组合在一起使用,代表一个服务的完整url。
- 2.解析类:
解析类ViewConfig与配置文件mapUrlConfig.xml位于相同的目录下。解析类的作用是将配置文件中的服务路径经过处理,使应用程序可以方便地使用。解析类的解析通过以下两个步骤来完成。
- 请求配置文件:ViewConfig通过创建HTTPService实例对象请求mapUrlConfig.xml,如下图3所示:
图3 请求配置文件
- 读取配置文件中的节点信息:从图3中可以看到为实例对象service注册了ResultEvent.RESULT事件侦听器,当此RPC 操作已成功返回结果时派发事件resultHandler。在resultHandler中添加读取配置文件中的节点信息逻辑代码。这里,分以下两步来完成。
第一步,读取mapUrlConfig中节点mapnames下的各节点信息,如下图4所示:
图4 读取mapnames下的各节点信息
第二步,为应用程序提供合适的SuperMap iServer Java 6R发布的服务列表地址。
8C服务列表地址。逻辑代码如下图5所示。
图5 提供合适的url
此外,需使用自定义事件ReadURLEvent为应用程序app注册ReadURLEvent.READ_COMPLETE事件侦听器,便于应用程序app做出相应处理。自定义事件ReadURLEvent代码如下图6所示。
图6 自定义事件ReadURLEvent
- 3.实例:
下面以访问”京津地区地图”为例,向您具体展示如何在应用程序中快速配置服务路径。”京津地区地图”的url为:http://localhost:8090/iserver/services/map-jingjin/rest/maps/京津地区地图。
第一步,双击打开 mapUrlConfig.xml文件,在节点mapnames下,增加子节点JingJin_MAP1,如下所示:
XML |
拷贝代码 |
<JingJin_MAP1>/map-jingjin/rest/maps/京津地区地图</JingJin_MAP1>
|
第二步,打开ViewConfig.as,定义变量JingJin_MAP1,如下所示:
AS |
拷贝代码 |
public static var JingJin_MAP1:String;
|
在resultHandler中,添加如下代码:
AS |
拷贝代码 |
JingJin_MAP1 = event.result.node.mapnames.JingJin_MAP1;
|
第三步,新建JingjinMapTest.mxml应用程序,示例代码如下:
AS |
拷贝代码 |
import utilEvent.ReadURLEvent;
private var viewConfig:ViewConfig;
[Bindable]
private var restUrl:String;
/* 初始化 */
private function init():void
{
viewConfig = new ViewConfig(this);
this.addEventListener(ReadURLEvent.READ_COMPLETE,readURLCompelte);
}
/* 获取服务地址 */
private function readURLCompelte(event:ReadURLEvent):void
{
restUrl = viewConfig.webUrl + ViewConfig.JingJin_MAP1;
}
|
MXML |
拷贝代码 |
<!--添加地图-->
<ic:Map id="map" x="0" y="0" height="100%" width="100%">
<is:TiledDynamicRESTLayer url="{restUrl}"/>
</ic:Map>
|
最后,点击“项目>清理”,选中“samplecode_iServerJava6R”,单击“确定”,确保编译成功。将应用程序JingjinMapTest设为默认启动项,运行应用程序,效果如下图7所示:
图7 运行效果图