×
您的位置: 首页 > 编程笔记

ArcGIS Server Java 开发实战---自定义command

Java ArcGIS AR 时间:2010-12-26  查看:479   收藏
摘要:命令事实上是command,也就是平常所在html页面里面的command,这些command里面就是命令按钮。在我们的ArcGIS Server的Web ADF里面,command被用来做一些不用跟地图交互的工作;比如缩放到全图:你不需要跟地图做任何交互,只要一按按钮,地图就缩放到全图。其它用处,就靠大家去发挥想象了,相信大家在以后的项目中会经常用到。 这个文档大家如果喜欢看英文,在ESRI的帮助里面就有。本文和ESRI的帮助文档类似,当然,我写的会加入自己的一些东西。

咱开发人员拿到一个开发平台,当然是要用来开发的,而且我们最好把它改得面目全非,才能显出开发人员我的水平所在。对于那些拿着模版生成一个web gis站点就去问客户要钱的事情,对于一个有自尊的开发人员,一般是不屑做的。

所以,我们今天就讲讲如何自定义命令和工具,先说说自定义命令吧。

命令事实上是command,也就是平常所在html页面里面的command,这些command里面就是命令按钮。在我们的ArcGIS ServerWeb ADF里面,command被用来做一些不用跟地图交互的工作;比如缩放到全图:你不需要跟地图做任何交互,只要一按按钮,地图就缩放到全图。其它用处,就靠大家去发挥想象了,相信大家在以后的项目中会经常用到。我们以一个例子作为说明:

  • package com.demo;
  • import javax.faces.event.ActionEvent;
  • import com.esri.adf.web.data.WebContext;
  • import com.esri.adf.web.data.geometry.WebExtent;
  • import com.esri.adf.web.faces.event.MapEvent;
  • import com.esri.adf.web.faces.event.MapToolAction;
  • public class MyFullExtent {
  • WebContext context;

  • public WebContext getContext() {
  • return context;
  • }
  • public void setContext(WebContext context) {
  • this.context = context;
  • }

  • public void setFullExtent(){
  • try{
  • WebExtent ex=context.getWebMap().getFullExtent();
  • context.getWebMap().setCurrentExtent(ex);
  • context.refresh();

  • }catch(Exception ex){
  • ex.printStackTrace();
  • }
  • }
  • }

  • 这是无比简单的一个command,简单到我都不好意思发出来给大家看了。注意这个类没有实现任何接口,也没有扩展任何现有的类,除了祖宗Object。它有一个WebContext,从上面一个讲座我们可以知道,这个类可是我们整个Web ADF的关键,有了它,可以得到所有的东西了。
    这个类关键的方法是setFullExtent,里面的几行代码用来将地图缩放到全图,大家看看代码应该就可以明白。

    怎么进行部署呢?就像普通的managed bean一样进行部署就可以了,打开jsf application的心脏faces-config.xml文件,在里面添加如下配置:


  • myFullExtent
  • com.demo. MyFullExtent
  • session

  • context
  • #{mapContext}



  • 注意我们把web context作为一个属性,用来初始化MyFullExtent,#{mapContext}指向了一个在faces-config.xml文件中定义的另外一个Bean,这个bean我们上次讲座已经详细解释过了。这里说一句废话,算是提醒一下,有请求过来的时候,先实例化这个类,然后再设置属性,有的工程师想在实例化里面进行一些操作,就必要用webContext,会报告空指针错误,因为这个时候webContext属性还没有被设置。

    类写好了,也配置好了,怎么用呢,再给个例子:


  • 自定义command就这样完成了。

     

    0% (0)
    0% (0)