- 浏览: 1153655 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
RebeccaZhong:
严重: StandardWrapper.Throwableco ...
三步发布java方式的rest服务 -
RebeccaZhong:
严重: StandardWrapper.Throwableco ...
三步发布java方式的rest服务 -
冷酷月光:
楼主。请教一下。arcgis for android 有提供地 ...
ArcGIS API For Android离线地图的实现 -
winney117:
请问如何GET已有网页上的指定内容?比如百度文库中的某一篇文章 ...
三步发布java方式的rest服务 -
zige1012:
您好,我想问问我想换个自己地图的切片,也有4层(L0-L3), ...
ArcGIS API For Android离线地图的实现
什么是tools,tools就是工具,它跟command的区别就是tools是要跟地图进行交互后再执行某个命令,而command是直接执行某个命令。最简单的tools和command的对比是放大是一个工具,而全图显示就是一个命令。
ESRI已经包含的工具包括:放大(zoom in),缩小(zoom out),平移(Pan)。
前面我们都是先说服务器端的处理代码,现在先来看看客户端的处理。跟地图交互,就会产生怎么交互的问题。拉框放大的时候是在地图上画的是一个长方形,测距的时候在地图上画的是一条线。如何控制这些客户端的功能呢?
查看com.esri.adf.web.faces.event.MapEvent的帮助,里面详细说明了如何把客户端的操作如何和服务器端的代码建立联系。已有的客户端支持的操作包括:
如果我们要自己写一个工具,我们可以新建一个普通的类,这个类可以实现MapToolAction接口,也可以不实现任何接口。我们先来看一个实现接口的类。
我们可以看到,通过MapEvent的getWebGeometry方法可以得到客户端所画的多边形,此时得到的是屏幕坐标,然后再通过toMapGeometry方法转换为地图坐标。
MapEvent的getWebGeometry方法事实上是指向到ClientActionArgs的getWebGeometry方法,你可以用下面的代码得到另外一个WebGeometry进行比较:
我们还可以用ClientActionArcgs的getRequestParameter查看传送过来的参数是什么,在客户端指定长方形的情况下,得到的RequestParamerter里面有如下参数:
你一定想看看客户端是多边形的情况下,参数是什么情况,我们满足一下您的愿望:
出现了以|分隔的参数集合,这个意思大家都明白了吧,这就是多边形的情况。
ClientActionArgs是一个基类,它的所有的子类对应于每一个客户端的操作。每个积累需要实现它的抽象方法。最重要的两个方法是init()和getWebGeometry,init从request里面得到所有的参数,getWebGeometry从根据不同的参数,构建不同的geometry返回。ADF会根据不同的客户端操作,创建不同的ClientActionArgs类。如果你一定要问我ADF是如何根据不同的客户端操作创建ClientActionArgs的,我们可以看到ClientActionArgs有一个静态方法:
ADF就是用这个静态方法,根据不同的clientAction可以得到的ClientActionArgs。
这一下,把来龙去脉都讲了,既让大家看看整个客户端和服务器端操作的来龙去脉,也为大家增加自己的客户端操作热个身。
当然,自定义一个tool并不需要这么多的知识。事实上,自定义一个tools非常得简单,我们来看看帮助中的一段代码,计算选中了多少个要素。
大家注意这里使用了很多com.esri.arcgisws package里面的类,这个package是通过axis调用远程webservice的方式去调用服务器端的方法的。我们会在后续的讲座中说明。编译这个类后,直接在jsp页面里面用下面的代码调用即可:
ESRI已经包含的工具包括:放大(zoom in),缩小(zoom out),平移(Pan)。
前面我们都是先说服务器端的处理代码,现在先来看看客户端的处理。跟地图交互,就会产生怎么交互的问题。拉框放大的时候是在地图上画的是一个长方形,测距的时候在地图上画的是一条线。如何控制这些客户端的功能呢?
查看com.esri.adf.web.faces.event.MapEvent的帮助,里面详细说明了如何把客户端的操作如何和服务器端的代码建立联系。已有的客户端支持的操作包括:
EsriMapCircle EsriMapContinuousPan EsriMapLine EsriMapOval EsriMapPan EsriMapPoint EsriMapPolygon EsriMapPolyline EsriMapRectangle
如果我们要自己写一个工具,我们可以新建一个普通的类,这个类可以实现MapToolAction接口,也可以不实现任何接口。我们先来看一个实现接口的类。
public class CJZoomInTool implements MapToolAction { public void execute(MapEvent event) { WebContext ctx = event.getWebContext(); WebGeometry screenGeom = event.getWebGeometry(); WebGeometry mapGeom = screen.toMapGeometry(ctx.getWebMap()); } }
我们可以看到,通过MapEvent的getWebGeometry方法可以得到客户端所画的多边形,此时得到的是屏幕坐标,然后再通过toMapGeometry方法转换为地图坐标。
MapEvent的getWebGeometry方法事实上是指向到ClientActionArgs的getWebGeometry方法,你可以用下面的代码得到另外一个WebGeometry进行比较:
ClientActionArgs clientarg=event.getClientActionArgs(); WebGeometry anotherGeom=clientarg.getWebGeometry();
我们还可以用ClientActionArcgs的getRequestParameter查看传送过来的参数是什么,在客户端指定长方形的情况下,得到的RequestParamerter里面有如下参数:
Map0_maxx:246 Map0_miny:147 Map0_minx:199 Map0_maxy:199
你一定想看看客户端是多边形的情况下,参数是什么情况,我们满足一下您的愿望:
Map0_coords:220:168|264:220|296:186|292:136|258:125
出现了以|分隔的参数集合,这个意思大家都明白了吧,这就是多边形的情况。
ClientActionArgs是一个基类,它的所有的子类对应于每一个客户端的操作。每个积累需要实现它的抽象方法。最重要的两个方法是init()和getWebGeometry,init从request里面得到所有的参数,getWebGeometry从根据不同的参数,构建不同的geometry返回。ADF会根据不同的客户端操作,创建不同的ClientActionArgs类。如果你一定要问我ADF是如何根据不同的客户端操作创建ClientActionArgs的,我们可以看到ClientActionArgs有一个静态方法:
getClientActionArgs(java.lang.String clientAction, java.util.Map requestParameters, java.lang.String controlId)
ADF就是用这个静态方法,根据不同的clientAction可以得到的ClientActionArgs。
这一下,把来龙去脉都讲了,既让大家看看整个客户端和服务器端操作的来龙去脉,也为大家增加自己的客户端操作热个身。
当然,自定义一个tool并不需要这么多的知识。事实上,自定义一个tools非常得简单,我们来看看帮助中的一段代码,计算选中了多少个要素。
package com.cj.ucdemo; import java.rmi.RemoteException; import com.esri.adf.web.ags.ADFAGSException; import com.esri.adf.web.ags.data.AGSMapResource; import com.esri.adf.web.data.WebContext; import com.esri.adf.web.data.geometry.WebExtent; import com.esri.adf.web.faces.event.MapEvent; import com.esri.adf.web.faces.event.MapToolAction; import com.esri.arcgisws.EnvelopeN; import com.esri.arcgisws.EsriSearchOrder; import com.esri.arcgisws.EsriSpatialRelEnum; import com.esri.arcgisws.MapServerPort; import com.esri.arcgisws.SpatialFilter; public class CountFeatureTool implements MapToolAction { WebContext context=null; int countedFeatures; private void countFeatures(WebExtent extent){ //Get the MapServerPort so we can execute methods through ArcGIS Server API AGSMapResource agsMap = ((AGSMapResource)context.getResources().get("ags1")); MapServerPort mapServer = agsMap.getMapServer(); //Make a new envelope from the web extent EnvelopeN env = new EnvelopeN(extent.getMinX(), extent.getMinY(), extent.getMaxX(), extent.getMaxY(), null, null, null, null, null); //Setup a spatial filter for an Intersection relationship SpatialFilter spatialFilter = new SpatialFilter(); spatialFilter.setSpatialRel(EsriSpatialRelEnum.esriSpatialRelIntersects); spatialFilter.setWhereClause(""); spatialFilter.setSearchOrder(EsriSearchOrder.esriSearchOrderSpatial); spatialFilter.setSpatialRelDescription(""); spatialFilter.setGeometryFieldName(""); //Set the envelope as the geometry spatialFilter.setFilterGeometry(env); //MapServer::queryFeatureCount() executes on the server and can throw a RemoteException try{ //Count features in 4th layer which intersect with the envelope int layerId = 1; this.countedFeatures = mapServer.queryFeatureCount(mapServer.getDefaultMapName(), layerId, spatialFilter); System.out.println("你选择了 "+countedFeatures+" 要素"); }catch(RemoteException rme){ //Rethrow this as ADFAGSException so that it can participate in the exception framework throw new ADFAGSException("Could not execute MapServer::queryFeatureCount()",rme); } } public void execute(MapEvent arg0) throws Exception { // TODO Auto-generated method stub try{ this.context=arg0.getWebContext(); WebExtent ex=(WebExtent)arg0.getWebGeometry(); ex=(WebExtent)ex.toMapGeometry(arg0.getWebContext().getWebMap()); this.countFeatures(ex); }catch(Exception ex){ ex.printStackTrace(); } } }
大家注意这里使用了很多com.esri.arcgisws package里面的类,这个package是通过axis调用远程webservice的方式去调用服务器端的方法的。我们会在后续的讲座中说明。编译这个类后,直接在jsp页面里面用下面的代码调用即可:
<a:tool id="countFeature" defaultImage="images/selection.gif" hoverImage="images/ selectionU.gif" selectedImage="images/ selectionD.gif" clientAction="EsriMapRectangle" serverAction="com.cj.ucdemo.CountFeatureTool" clientPostBack="true"/>
发表评论
-
ArcGIS Server 导出地图图片(SOAP)
2011-03-22 17:40 3649package com.esri.arcgis.sampl ... -
ArcGIS Server 集群的问题
2010-12-06 14:49 1821今天在服务器做了一个ArcGIS Server的集群部署加测试 ... -
Server For Flex API在线编辑移动图片符号
2010-11-18 21:57 2128当在点击事件中,用edit工具移动图片(Picture ... -
ArcGIS Server动态读取图层样式(Flex版)
2010-10-26 22:36 5260最近遇到很多人问这类的问题,在ArcGIS10的rest接口已 ... -
Web地图设计模式——ArcGIS Server
2010-06-07 12:54 3174Web地图通常包含底图(提供影像和位置信息)和功能性的专题图层 ... -
Arcgis Server+Asp.net(C#)的唯一值渲染
2010-05-27 23:55 3875#region "唯一值渲染" // ... -
Arcgis server的池化和非池化
2010-05-27 23:52 2026ServerObject的池化和非池 ... -
AO批量处理的经验之谈
2010-02-08 21:37 2433往Personal GDB或SDE GDB中写入要素记录是一件 ... -
任务管理器中arcsom.exe和arcsoc.exe的个数问题
2010-01-22 13:28 1805安装了ArcGIS Server的机器,当打开任务管理器的时候 ... -
ArcGIS空间查询算子
2010-01-20 19:19 25901. Intersect 定义:相交查询算子 ... -
ArcGIS Server的切图原理深入
2009-12-12 11:06 2714GoogleMap,VirtualEarth,YahooMap ... -
关于cache文件格式的选择:png8,png24,png32 or jpeg
2009-11-04 20:56 2557关于如何合理的选择缓存图片的格式: ... -
基于ArcGIS Server对ShapeFile文件的编辑功能实现
2009-05-13 16:46 4197public class PointEdit { ... -
ArcGIS server 常见问题
2009-05-11 13:13 27472更多问题详见:http://www ... -
Attachment support is disabled解决方案
2009-03-08 21:47 6460Unable to find required classes ... -
Ajax Integration and Support in the ArcGIS Java We
2009-03-08 21:34 2031http://edndoc.esri.com/arcobjec ... -
Server Java开发--Born for SOA系列 整理中。。。
2009-02-16 10:36 2127Server Java开发--Born for SOA系列 前 ... -
空间查询及属性文本查询的代码
2009-02-10 13:05 5051package com.esri.adf.web; ... -
ArcGIS Server 专题图的实现
2009-02-09 14:48 7239测试完毕.地图服务是用ArcGis自带的USA.mxd.还留有 ... -
Server Java讲座--动态添加图层数据
2009-02-05 11:46 2352有的时候,特别是在做分析时,需要经常添加新的图层到当前的地图中 ...
相关推荐
18、ArcGIS Server Java讲座--自定义Tools开发 48 19、ArcGIS Server Java讲座-空间查询和高亮显示的实现 52 20、Server Java 自定义开发-Network Analysis 54 21、ArcGIS Server开发——控制图层是否可见 59 22、...
本文将深入探讨如何利用ArcGIS Server自定义tools来增强其功能,特别是关于"identify"操作的应用技巧。 一、自定义Tools的概述 自定义Tools是ArcGIS Server提供的一个重要特性,允许开发者根据实际需求定制功能,以...
**ArcGIS Server Java 开发文档翻译** ArcGIS Server 是 Esri 公司提供的一款强大的地理信息系统(GIS)服务器产品,它允许开发者通过多种编程语言,包括 Java,来构建地图服务和地理处理工作流。这份文档翻译集合...
在Java生态中,Zipkin Server 是一个重要的工具,因为它与Java应用的集成非常便捷。 Zipkin 的核心功能包括: 1. **追踪收集**:Zipkin 可以收集来自各个服务的追踪数据,这些数据通常由客户端库(如 Brave 或 ...
【自定义工具(Custom Tools)】和【自定义命令(Custom Commands)】是ArcGIS Server Java开发中的关键部分。自定义工具允许开发者根据特定需求创建独特的地图操作,如测量、选择或分析等。自定义命令则用于扩展...
《JDK12 Java Management Extensions Guide》是Oracle公司发布的一份技术文档,主要针对Java Platform, Standard Edition(Java SE)12版本中的Java Management Extensions(JMX)进行深入的介绍和指导。JMX是一种...
接下来我们就要实现我们的终极目标了:system_server(JAVA端)与服务端相互通信; 预处理 首先先解释下一个“玄学”的情况:在前两章的操作完成后,我们不需要添加任何JAVA类,即可直接使用; 究其原因,是因为在我们...
程序可以采用 JAVA 开发,但是因为它的虚拟机 (Virtual Machine) Dalvik ,是将 JAVA 的 bytecode 转成 自 己的格式,回避掉需要付给 SUN 有关 JAVA 的授权费用。 对手机制造者的影响 � Android 是款开源的移动计算...
以上就是Windows 7环境下配置Java开发环境,包括JDK安装、环境变量配置、Tomcat服务器的安装与配置,以及在MyEclipse中集成JDK和Tomcat的完整步骤。这些步骤对于任何Java开发者都是基础且必要的。
在Eclipse JEE版本中,这些功能得到了进一步增强,特别是对于Java EE应用程序的开发,如Web服务、Java服务器页面(JSP)、JavaServer Faces(JSF)以及Enterprise JavaBeans(EJB)等,提供了全面的工具集和模板。...
Web Tools Platform(WTP)是Eclipse平台上的一个重要组件,专为Java EE和Web应用开发而设计。它不仅提供了强大的Web开发功能,如动态Web项目的支持、Web服务开发工具,还包含了用于构建自定义编辑器的核心框架。WTP...
标题中的"appengine-tools-sdk-1.9.17.zip"指的是Google App Engine SDK的一个特定版本,1.9.17。Google App Engine是一个由Google提供的云服务平台,它允许开发者构建、部署和运行Web应用程序。SDK(Software ...
自定义标签库是Java Server Pages (JSP) 技术中的一个重要组成部分,它允许开发者创建可重用的、功能丰富的HTML标签,这些标签可以像标准HTML标签一样在JSP页面中使用。本文将详细介绍如何从零开始构建一个自定义...
- **JavaServer Faces Tools - Cor**:加强 JSF 的开发支持。 - **Service Policy**:用于配置 Web 服务的安全策略。 - **ATF Debug Plug-in (Incubation)**:用于调试 ATF 应用程序。 - **Auxiliary Web Module...
- JavaServer Faces Tools-Cor:JSF 工具集。 - Auxiliary Web Module Support for MeEclipse:辅助 Web 模块支持。 - JSF Editor Preview Support for MyEclipse:JSF 编辑器预览支持。 - **服务策略**:在 ...
总的来说,Java开发中的配置工作是一项基础但重要的任务。理解并熟练掌握这些配置方法,不仅可以提升开发效率,也有助于我们更好地理解和运用Java生态系统。通过不断实践和学习,每个开发者都能找到最适合自己的配置...
### Java开发环境配置详解 #### 一、JDK环境配置 **1.1 下载JDK** - **步骤**: 在百度搜索“JDK”,访问官方下载页面,选择适合您操作系统的JDK版本进行下载(通常有32位和64位版本)。推荐下载JDK 1.8.x版本,因...
“with Tools”意味着这个版本包含SQL Server Management Studio (SSMS)和其他开发工具。SSMS是数据库管理员和开发人员的重要工具,用于创建、配置、管理和维护SQL Server实例。此外,还包括数据库引擎、Reporting ...