Server Java 二:利用Ajax得到当前地图的比例尺(服务器端)

现在我们进入实战阶段,看看我们怎么可以在服务器端得到当前地图的范围,这个代码中你将学到如何从faces Context里面得到当前form中的控件,以及如何利用ESRI提高的工具,简化我们响应AJAX请求的过程:

UIComponent form = facesContext.getViewRoot().findComponent((String)paramMap.get(FORMID));
首先我们得到页面上的form,form是一个container,通过它我们可以得到form中的其它组件,比如我们的地图控件:
<a:map id="Map0" value="#{mapContext.webMap}" width="600" height="600" /> 

我们可以用下面的方法得到这个Mapcontrol和WebMap:

MapControl mc = (MapControl) form.findComponent((String)paramMap.get(MAPID));
WebMap wm = mc.getWebMap();

得到了这个WebMap,哈哈,可以得到Everything了,因为你可以从WebMap中得到WebContext。这个时候,想得到那个比例尺,是再简单也不过的事情了,用下面的代码即可:

wm.getMapScale();

得到了比例尺了,接下去怎么办呢?把它返回到客户端,我们的Ajax客户端认的是XML的流,咋办呢?最笨的办法当然是是一个一个String的组装成XML,然后调用Response的Write写回到客户端,比如下面的代码:

public String toXml() {
StringBuffer xml = new StringBuffer();
xml.append("<?xml version=\"1.0\"?>\n");
xml.append(“<scale>”);
xml.append(“<value>100</value>”);
xml.append("</scale>\n");
return xml.toString();
}

生成了XML代码,然后用下面的代码把结果返回给客户端:

Response res=(Response)externalContext.getResponse();
res.setContentType("application/xml");
res.getWriter().write(scaleXml);

当然,各位看官想来都是JAVA高手,对于这样的写法实在感觉不舒服,正待想办法用标准的XML工具来写时,你会发现,ESRI已经为您想到了,写好了几个工具类来供你调用了。我们来看看怎么用这些工具:
用下面的代码创建一个标准的XML文档:

Document doc = XMLUtil.newDocument();

用下面的代码新建一个element:

Element responseElement = XMLUtil.createElement(doc, "response", null, null);

用下面的代码将我们的比例尺数据写到刚才新建的Element里面:

XMLUtil.createElement("scale", String.valueOf(wm.getMapScale()), responseElement);

然后用下面的语句将XML文档写入到客户端:

AJAXUtil.writeResponse(facesContext, doc);

很可惜的是,ESRI这些类的代码是不公开的,不过你可以猜一猜,这些方法里面到底发生了什么事情。
OK,皮球又被提到了客户端了,我们下一个讲座来看看,如何解析服务器端返回的XML文档,并且更新页面上的输入框。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值