小秋的家

          home

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            1 Posts :: 91 Stories :: 17 Comments :: 0 Trackbacks
          使用ArcGIS Server Java ADF  Manager創建的Web Application中提供一個通用的工具條,包含默認的8個地圖工具(包括4個Tool和4個Command).
          打開模版產生的mapviewer.jsp文件,在第37行我們可以看到這個工具條的定義:

          <a:task id="mapToolsTask" value="#{mapToolsTask}" taskInfo="#{mapToolsTask.taskInfo}" mapId="map1" windowingSupport="false" style="padding:0px;margin:0px;"
          xslFile="maptoolstask.xsl"/>

          我們發現,它并不是由a:toolbar和a:tool定義的,而是一個封裝好的mapToolsTask對象。
          通過查看faces-config.xml,我們看到mapToolsTask的定義如下:


          <managed-bean>
          <managed-bean-name>mapToolsTask</managed-bean-name>
          <managed-bean-class>com.esri.adf.web.tasks.MapToolsTask</managed-bean-class>
          <managed-bean-scope>session</managed-bean-scope>
          <managed-property>
          <property-name>webContext</property-name>
          <value>#{mapContext}</value>
          </managed-property>
          </managed-bean>

          事實上,mapToolsTask是在ArcGIS Server Java ADF 中已經封裝好的com.esri.adf.web.tasks.MapToolsTask的一個實例。
          類似于自定義Task的過程中實現TaskInfo的方法,我們可以也可以通過為這個mapToolsTask實現一個TaskInfo來達到定制的目的。倍感方便的是,在ArcGIS Server Java ADF 也同樣封裝好了一個
          com.esri.adf.web.tasks.MapToolsTaskInfo的類,我們只需繼承這個類再修改其中的配置即可,舉個最簡單的例子:
          1.新建一個類MyToolsTaskInfo,繼承自com.esri.adf.web.tasks.MapToolsTaskInfo,

          package com.jerry.ags;
          import com.esri.adf.web.tasks.MapToolsTaskInfo;
          import com.esri.adf.web.tasks.MapToolsTaskConfig;
          public class MyToolsTaskInfo extends MapToolsTaskInfo{
          public MyToolsTaskInfo(){
            MapToolsTaskConfig tc=new MapToolsTaskConfig();
            tc.setTools("IDENTIFY,ZOOMIN,ZOOMOUT,");
            super.setTaskConfig(tc);
          }
          }

          在這個簡單的例子中只包含一個構造函數,在構造函數中我們首先創建一個import com.esri.adf.web.tasks.MapToolsTaskConfig的實例,并調用它的setTools方法,意為在工具條中只包
          含"IDENTIFY,ZOOMIN,ZOOMOUT"三個工具。最后通過調用基類的setTaskConfig方法將這個com.esri.adf.web.tasks.MapToolsTaskConfig實例生效。
          2.在face-config.xml文件中添加如下配置:

          <managed-bean>
          <managed-bean-name>myToolsTaskInfo</managed-bean-name>
          <managed-bean-class>com.jerry.ags.MyToolsTaskInfo</managed-bean-class>
          <managed-bean-scope>session</managed-bean-scope>
          </managed-bean>

          3.修改mapviewer.jsp文件第37行工具條的定義中taskInfo屬性的值

          <a:task id="mapToolsTask" value="#{mapToolsTask}" taskInfo="#{myToolsTaskInfo}" mapId="map1" windowingSupport="false" style="padding:0px;margin0px;"
          xslFile="maptoolstask.xsl"/>

          4.重新部署并啟動應用,我們看到工具條中就只出現三個工具,依次是IDENTIFY-ZOOMIN-ZOOMOUT

          補充
          1.相信定制模版應用的工具條還有更為靈活的方法,比如直接自定義Tool,Command,并通過a:toolbar,a:tool,a:command等標簽定義來替代a:task。可以參考與這部分內容相關的資料。

          2.MapToolsTaskInfo繼承自com.esri.adf.web.data.tasks.SimpleTaskInfo,因而可以通過實現TaskInfo接口中定義的getActionDescriptors(),getToolDescriptors()等方法進行更復雜的定制。
          比如,我們希望修改點擊查詢為拉框查詢,可以修改MyToolsTaskInfo 的實現程序如下:

          package com.jerry.ags;
          import com.esri.adf.web.tasks.MapToolsTaskInfo;
          import com.esri.adf.web.tasks.MapToolsTaskConfig;
          import com.esri.adf.web.data.tasks.TaskToolDescriptorModel;
          import com.esri.adf.web.data.tasks.TaskToolDescriptor;
          import com.esri.adf.web.faces.event.ClientActions;
          import com.esri.adf.web.tasks.MapToolsTask;
          public class MyToolsTaskInfo extends MapToolsTaskInfo{
          private TaskToolDescriptor[] taskTools=new TaskToolDescriptor[3];
          public MyToolsTaskInfo(){
            MapToolsTaskConfig tc=new MapToolsTaskConfig();
            tc.setTools("IDENTIFY,ZOOMIN,ZOOMOUT,");
            super.setTaskConfig(tc);
           
            taskTools[0]=new TaskToolDescriptor(MapToolsTask.class,"identify","拉框查詢",ClientActions.MAP_RECTANGLE);
            taskTools[0].setRendererType(TaskToolDescriptor.IMAGE_RENDERER_TYPE);
            taskTools[0].setDefaultImage("http://jerry:8000/gs/images/tasks/maptools/identify.png");
            taskTools[0].setSelectedImage("http://jerry:8000/gs/images/tasks/maptools/identifyD.png");
            taskTools[0].setHoverImage("http://jerry:8000/gs/images/tasks/maptools/identifyU.png");


            taskTools[1]=new TaskToolDescriptor(MapToolsTask.class,"zoomIn","放大",ClientActions.MAP_RECTANGLE);
            taskTools[1].setRendererType(TaskToolDescriptor.IMAGE_RENDERER_TYPE);
            taskTools[1].setDefaultImage("http://jerry:8000/gs/images/tasks/maptools/zoomin.png");
            taskTools[1].setSelectedImage("http://jerry:8000/gs/images/tasks/maptools/zoominD.png");
            taskTools[1].setHoverImage("http://jerry:8000/gs/images/tasks/maptools/zoominU.png");
           

            taskTools[2]=new TaskToolDescriptor(MapToolsTask.class,"zoomOut","縮小",ClientActions.MAP_RECTANGLE);
            taskTools[2].setRendererType(TaskToolDescriptor.IMAGE_RENDERER_TYPE);
            taskTools[2].setDefaultImage("http://jerry:8000/gs/images/tasks/maptools/zoomout.png");
            taskTools[2].setSelectedImage("http://jerry:8000/gs/images/tasks/maptools/zoomoutD.png");
            taskTools[2].setHoverImage("http://jerry:8000/gs/images/tasks/maptools/zoomoutU.png");
          }

          public TaskToolDescriptorModel[] getToolDescriptors(){
            return taskTools;
          }

          }

          注意其中的taskTools[0]=new TaskToolDescriptor(MapToolsTask.class,"identify","拉框查詢",ClientActions.MAP_RECTANGLE);

          posted on 2008-03-04 16:17 棋劍小秋 閱讀(1159) 評論(2)  編輯  收藏 所屬分類: GIS

          Feedback

          # re: 如何定制ArcGIS Server Java ADF 應用模版(一)--定制工具條[未登錄] 2009-04-29 16:55 菜鳥
          taskTools[0].setDefaultImage("http://jerry:8000/gs/images/tasks/maptools/identify.png");
          不可以的,需要把jerry:8000/gs/去掉  回復  更多評論
            

          # re: 如何定制ArcGIS Server Java ADF 應用模版(一)--定制工具條 2009-06-03 01:02 劉建民
          照著試了試,成功了,對初學者很有幫助!謝謝!  回復  更多評論
            

          主站蜘蛛池模板: 安丘市| 永吉县| 桐庐县| 正阳县| 太康县| 醴陵市| 蒙自县| 承德市| 依兰县| 无为县| 友谊县| 集贤县| SHOW| 闵行区| 博野县| 武威市| 县级市| 陵水| 和政县| 来宾市| 宁津县| 九江县| 鄂托克前旗| 台东市| 普宁市| 巴彦淖尔市| 潮州市| 澜沧| 松原市| 万州区| 韩城市| 阳城县| 将乐县| 施秉县| 澄城县| 灵台县| 城固县| 雅江县| 六盘水市| 玉林市| 许昌市|