2009年4月28日星期二

ArcGIS Server Java ADF 案例教程 20

七 自定义Button实现前面的Command和Tool【案例】

在这一章前面的小节中,我们实现了两个案例分别演示Command和Tool的功能;在这个案例里,让我们用Button来完成相同的工作。
首先,我们需要在一个我们自己定义的ManagedBean 来实现这些功能。注意,在这个ManagedBean中我们会使用WebContext对象(否则怎么调用地图功能),因此,我们这个类定义需要实现WebContextInitialize接口。当然,在IDE中有更简单的方法,比如在Eclipse中选择菜单【New】-【Context Attribute】就可以新建一个ManagedBean并添加到WebContext对象的attributes中去。
好了,现在我们已经有了自己的ManagedBean类“MapEditor”;接下来我们先实现地图等比放大的功能。在这个类中,我们添加一个不带任何参数的方法zoomIn,在zoomIn实现地图放大一倍的功能。源代码如下:
package wuyf;

import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.WebContextInitialize;

public class MapEditor implements WebContextInitialize
{
private WebContext webContext;

public void destroy() {}

public void init(WebContext context)
{
this.webContext = context;
}

public void zoomIn()
{
webContext.getWebMap().getCurrentExtent().expand(0.5);
webContext.refresh();
}
}

在页面中用如下的标签进行定义:

这个时候,你在页面上点击这个Button的时候,地图也会放大一倍了。
下面我们接着去实现点击地图居中,和上面类似,只不过实现这个功能的方法需要带一个MapEvent参数:
public void centerAt(MapEvent event)
{
WebPoint webPoint = (WebPoint)event.getWebGeometry().toMapGeometry(webContext.getWebMap());
webContext.getWebMap().centerAt(webPoint, 1.0);
webContext.refresh();
}

在页面中定义的标签则如下:

好了,试着点击这个按钮,再在地图上点击,是不是地图以点击处居中了?

没有评论: