2009年4月28日星期二

ArcGIS Server Java ADF 案例教程 18

五 自定义Tool实现点击地图居中【案例】

在这一小节中,我们通过自定义一个Tool来激活这样的地图功能:每次点击地图,都以这个点击点为中心使地图居中。

如下,我们新建了这样一个类CenterAtToolAction:

import com.esri.adf.web.data.WebContext;
import com.esri.adf.web.data.geometry.WebPoint;
import com.esri.adf.web.faces.event.MapEvent;
import com.esri.adf.web.faces.event.MapToolAction;

public class CenterAtToolAction implements MapToolAction
{
public void execute(MapEvent event) throws Exception
{
WebContext webContext = event.getWebContext();
WebPoint webPoint = (WebPoint)event.getWebGeometry().toMapGeometry(webContext.getWebMap());
webContext.getWebMap().centerAt(webPoint, 0.5);
webContext.refresh();
}
}


这个类的关键是实现了MapToolAction的execute方法,当一个Tool被激活,并在地图上进行了操作以后,一个请求就会被发送到服务器,对应的MapToolAction的execute方法就会被执行。

这里,我们通过MapEvent的获得WebContext和WebGeometry 对象。比如我们在浏览器中点击了一下,那么WebGeometry就是一个点对象,当然,这个点坐标是基于屏幕坐标的,我们需要调用它的toMapGeometry方法转化成地理坐标。

当这些准备工作完成以后,我们就可以使用WebMap的centerAt方法使地图居中,随后刷新WebContext输出响应到浏览器。

如图 11是点击居中前后的地图。

没有评论: