`
Virgo_S
  • 浏览: 1153645 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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文档,并且更新页面上的输入框。
分享到:
评论

相关推荐

    ArcGIS+Server+Java讲座

    13、ArcGIS Server Java讲座----利用Ajax得到当前地图的比例尺(服务器端) 32 14、ArcGIS Server Java讲座--用Ajax得到地图比例尺(客户端代码) 33 15、ArcGIS Server JAVA 讲座 自定义Functionality 35 16、ArcGIS ...

    ArcGIS Server Java讲座.doc

    - 使用图片和TrueType字体进行标注,以及如何通过Ajax获取地图比例尺等,这些都是提高用户体验的重要技术。 - 讲座还涉及了如何在客户端和服务器端处理Ajax请求,实现地图操作和用户交互的动态响应。 6. **SOA和...

    [feiq]ArcGIS Server Java讲座.doc

    - 讲座详细讲解了AJAX基础,以及在ADF中的Ajax函数应用,如何在服务器端和客户端处理Ajax请求,比如获取地图比例尺等,增强了Web应用程序的交互性和实时性。 6. **自定义功能**: - 讲座讨论了如何通过自定义...

    二次开发arcgis_server_for_java

    - **服务器端处理:**服务器端接收请求,计算比例尺,并将结果通过 Ajax 响应返回给客户端。 - **应用场景:**这种功能在 GIS 应用中非常重要,因为它可以帮助用户了解地图的缩放级别。 #### 五、自定义 ...

    基于java的arcgis开发

    文档中提到了如何在ArcGIS Server的Java开发中实现AJAX,以及如何利用AJAX得到当前地图的比例尺。这显示了ArcGIS Server开发中动态交互式的用户界面的实现方式。 文档最后还提到了如何使用ArcGIS Server进行SOA...

    jsp js java网页头像切割实例

    JSP是Java的一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,从而实现服务器端的数据处理和动态内容生成。在这个实例中,JSP将用于接收用户上传的头像文件,处理上传请求,以及可能的存储和展示。 2. **...

    jsp+CropZoom+jquery+java 图片缩放裁剪

    这个项目使用了JSP(JavaServer Pages)作为后端动态网页技术,CropZoom作为前端图像裁剪库,jQuery提供便利的DOM操作,而Java则用于处理服务器端的业务逻辑和文件操作。 【描述】中提到,该系统已经在MyEclipse8.5...

    jQuery cropzoom + JSP.rar

    5. **服务器端处理**:在JSP中,我们可以使用Java来接收并处理这些裁剪数据。这些数据通常包含裁剪的坐标和尺寸,服务器需要根据这些信息处理原始图像,生成裁剪后的图像。可以使用Java的图像处理库如Apache Commons...

    WebGIS考试参考试题.docx

    - **解析:** 地图的预制缓存是指将地图按照一定的比例尺和范围预先渲染并分割成多个小图像(瓦片),以便快速加载和显示。 12. **ArcGlobe中的3D文档格式** - **解析:** 在ArcGlobe中创建的3D文档通常保存为 .3DD...

    jsp+jquery(jcrop)实现的图片预览剪切上传

    `jsp`(JavaServer Pages)和`jQuery`是两种广泛使用的技术,用于构建动态、交互式的Web界面。本项目结合了这两者,并引入了`jCrop`插件,实现了图片预览、剪切和上传的功能,对于用户友好的图像管理界面有着重要的...

    flash头像图片剪裁仿新浪微博头像上传组件代码

    JSP(JavaServer Pages)是基于Java的服务器端技术;ASP(Active Server Pages)是微软的服务器端脚本环境,用于生成动态网页;而ASP.NET是.NET框架的一部分,用于构建高性能的Web应用。 6. **localhost访问**:...

Global site tag (gtag.js) - Google Analytics