创建Web地图应用工程
1. 创建一个新的ArcGIS Server工程. 从Eclipse主菜单选择File>New>Project,导航到ESRI Templates>Server,选择ArcGIS Server Project. 点击Next.
2. 输入AgsSimple作为工程名,从target runtime选择一个Web容器.
3. 输入正确的GIS server服务器名,用户名,密码和域. 点击Connect按钮就可以看到server objects出现在左下列表中。点击选择前面创建的usa服务。点击Finish就生成了一个地图Web应用。
Eclipse IDE利用模版为我们生成了一个相对复杂的地图Web应用。对于这个例子,我们并不需要太复杂的功能,所以只要两个文件:WEB-INF目录下的faces-config.xml和Web应用根目录下的map.jsp。faces-config.xml文件是用来连接Web ADF框架框架的业务对象,暴露这些对象给视图/Web层,为应用指定适当的GIS servers,以及提供鉴权信息. Map.jsp包含用于渲染地图应用的JSP标签, 如地图、目录(TOC)、以及地图工具. 而用于创建这些视图的数据又反过来绑定在faces-config.xml指定的数据源中。
Web控件和Managed-bean
在Web ADF应用中使用了好几种Web控件,有些是可见的如map和tools Web控件,有些不可见比如context control。在使用这些控件之前必须在Web ADF应用中配置好。Web控件配置涉及几个文件:
•context-attributes.xml
•ags-functionalities.xml
•face-config.xml
context-attributes.xml: 在context-attributes.xml中, 创建了一个名为map\" 的 managed-bean,它是你在同一个应用中看到的地图Web控件的逻辑表示。这个managed-bean创建后,你还需要为它设置一些属性。比如你可以设置一个地图managed-bean的\"imageFormat\" 属性为 \"PNG\"。
context-attributes.xml:
这个简单的应用只有一个map控件,所以只有一个map控件的managed-bean需要创建。如果你需要加像\"Toc\" 和 \"overview\" 的控件,你还要创建这些anaged-beans于context-attributes.xml中。
ags-functionalities.xml: 在ags-functionalities.xml中,创建了ArcGIS Server的不同功能的managed-beans:
agsMap: 代表map控件的地图功能的managed-bean
agsToc: 代表toc控件的toc功能的managed-bean
agsOverview: 代表overview控件的overview功能的managed-bean
ags-functionalities.xml:
一旦一个functionality managed-bean创建并添加到resource managed-bean的属性,该就可以在Web ADF应用中使用了。在本例子中,只有添加了map functionality作为map resource的属性。更多的functionalitie,像query, geocode, 和history可以创建并添加到map resource中。
faces-config.xml: 在faces-config.xml中,定义了四个managed bean: \"esriWebApplication\
\"ags1\" 代表你在Web应用中欲发布的GIS数据源。在这个例子中就是ArcGIS Server。定义在ags-functionalities.xml的functionality添加到map resource的属性列表中。
\"esriWebApplication\" 在ADF web应用中总被设置成application级别的managed-bean。
\"esriWebSession\" 该managed-bean持有\"esriWebApplication\"作为属性。
\"mapContext\" 该managed-bean是\"context\" 控件的逻辑代表并且持有\"esriWebSession\" 和\"map\" 作为它的属性.
对任何Web ADF应用,后三个managed-bean是必要的,特别是 \"mapContext\",它像hub一样连接和协调其他ADF组件。这也是把一个\"map\" 作为它的属性和\"ags1\" 作为它的resource。
faces-config.xml:
一旦这些managed-bean在context-attribute.xml,ags-functionalities.xml 和faces-config.xml适当配置好了,你可以容易地在ADF Web应用的JSP页面中以JSP标签方式添加Web控件。
编写JSP页面
本例子只有一个页面map.jsp。 该页面相对简单:它只显示一张地图,允许用户放大、缩小、放大到全部。
命令和工具
命令是一个触发服务端动作而不需要进一步地客户端交互地JSP页面元素。命令的一个例子是\"放大到全部\" 按钮。用户一点击该按钮,服务端就执行一个方法。工具在执行一个服务端方法前需要进一步的客户端交互。工具的一个例子是\"框选放大\"。用户一点击按钮,还要在地图上拖拽一个方框表示欲放大的区域,然后服务端的方法才执行。地图和工具的交互是工具栏比促指定它的关联地图的原因。 工具栏的前两个元素是放大和缩小。这两个标签有两个重要属性:clientAction和serverAction。clientAction属性指定了哪个javascript 函数和工具关联,serverAction属性指定了服务端哪个类被调用当客户端动作结束.。对于第一个工具。当用户点击放大放大按钮,浏览器执行一个叫MapDragRectangle的javascript函数。用户在地图Map0上画一个方框后,表单提交到服务器,服务器调用ZoomInToolAction类。 这个类的执行方法会被调用,javascript的输出将作为该方法的MapEvent参数。 下一个标签是命令标签,用于纯服务端处理。本例子使用一个ZoomFullExtentListener使地图放大到全部。命令标签是JSF命令标签的扩展。当用户点击命令的按钮后,服务端调用ZoomFullExtentListener类的processAction方法。 最后一个 Web ADF 标签是地图标签,该标签在页面上渲染一张地图,它的ID用来在页面里标识该地图,比如和工具栏的关联。你可以通过标签属性控制一些地图的属性,比如尺寸,工具拉框颜色,边框以及使用哪个XSL。 小结 ADF的managed-bean之间的关系图: mapContext(WebContext) | +esriWebSession(WebSession) | | | +esriWebApplication(WebApplication) | +attributes | | | +map(WebMap) | +toc(WebToc) | +... | +resources | +ags1(AGSMapResource) | +agsUser1 | +serverObjectName | +hosts | +functionalities | +agsMap(AGSMapFunctionality) +agsToc(AGSTocFunctionality) +agsOverview(AGSOverviewFunctionality) +... 创建地图Web应用的步骤: 1. 声明ArcGIS Server的MapServer object作为GISResource 2. 关联AGSMapFunctionality和GISResource 3. 声明WebMap来使用functionality 4. 关联WebMap和context,确保它参与Web ADF框架 5. 在jsp页面写适当的jsp标签 因篇幅问题不能全部显示,请点此查看更多更全内容