当前位置: 首页 > news >正文

ArcGIS Server Java ADF 案例教程 15

二 【案例】自定义Command使地图等比放大

在这一小节,我们通过自定义Command定制一个按钮,这个按钮每点击一次,地图会放大1倍。通过这个简单案例,让我们来熟悉一下Command的用法。

实现这个功能的主要环节是实现自己的监听器类,以下是这个类的定义:
import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.util.WebUtil;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import javax.faces.event.ActionListener;

public class ZoomInListener implements ActionListener
{
public static double ZOOM_FACTOR = 0.5;

public void processAction(ActionEvent event) throws AbortProcessingException
{
WebContext webContext = WebUtil.getWebContext(event.getComponent());
webContext.getWebMap().getCurrentExtent().expand(ZOOM_FACTOR);
webContext.refresh();
}
}

当然,在JSF页面中的用法和上面类似,也很简单:

这个ZoomInListener监听器类主要需要实现了ActionListener的processAction方法,当用户点击这个id为“zoomIn”的Command的时候,这个监听器会被触发,然后其processAction方法就会被执行。

在这个processAction方法中,我们首先获得WebContext对象,通过WebContext我们就可以获得WebMap对象,进而对它的currentExtent属性进行操作(地图范围缩小1倍),再刷新WebContext对象。这个过程很简单,中间有两个环节这里稍作解释。

一个环节是如何获得WebContext对象。processAction是JSF的ActionListener接口的一个方法,这个方法的参数是ActionEvent ,因此它的属性与ADF基本没有关系,所以,获得WebContext就需要用到ADF的WebUtil工具类,ESRI的工程师为了可以在各种环境下获得WebContext这个ADF中非常重要的环境,制造了WebUtil这个工具类及其getWebContext方法,通过这个方法我们可以很方便地获得WebContext对象。

另外一个环节就是WebContext对象的refresh方法,我们在对服务器端的WebMap对象进行一些操作以后,调用了WebContext的refresh方法以后,浏览器中的地图就会刷新成新的视图,其相关的TOC、Overview等组件也会跟着刷新,这很奇妙吧。

相关文章:

  • Floyd-Warshall 算法-- 最短路径(适合节点密集的图)
  • 英雄会创业论坛梁宁主持手记-初创业2人,天才少年2人,成功2人
  • Windows Azure系列-- 配置Azure Power Shell
  • 北京英雄会片段
  • Windows Azure 系列-- Azure Redis Cache的配置和使用
  • 2009 CSDN英雄会记事 - 珍惜时间、规划生活
  • LeetCode -- 删除链表中值为k的元素
  • ArcGIS Server Java ADF 案例教程 16
  • LeetCode --- Count And Say
  • 一个超火的网站“Omegle”
  • LeetCode 格雷码序列的生成
  • LeetCode -- 反转英文单词
  • XACT QA
  • LeetCode -- 最大连续乘积子序列
  • 重新安家,很不幸 kamang域名忘记续费了。
  • Bytom交易说明(账户管理模式)
  • JAVA并发编程--1.基础概念
  • Linux下的乱码问题
  • mockjs让前端开发独立于后端
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • underscore源码剖析之整体架构
  • Wamp集成环境 添加PHP的新版本
  • 阿里云购买磁盘后挂载
  • 百度地图API标注+时间轴组件
  • 翻译--Thinking in React
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 基于 Babel 的 npm 包最小化设置
  • 七牛云假注销小指南
  • 什么软件可以提取视频中的音频制作成手机铃声
  • C# - 为值类型重定义相等性
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 阿里云移动端播放器高级功能介绍
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​学习一下,什么是预包装食品?​
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #define,static,const,三种常量的区别
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • (1)(1.13) SiK无线电高级配置(五)
  • (1)STL算法之遍历容器
  • (11)MSP430F5529 定时器B
  • (java)关于Thread的挂起和恢复
  • (LeetCode 49)Anagrams
  • (poj1.2.1)1970(筛选法模拟)
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (学习日记)2024.01.19
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • /proc/vmstat 详解
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504