2009年6月24日星期三
ArcGIS RIA开发实践 3
I、 ArcGIS Flex API 高级 一 控制Map与Layer 1 Map中地图服务图层的控制 Map中图层的控制是很多人首先关心的问题,因为根据业务来切换图层的状态是经常遇到的一种需求。 首先让我们看一下对图层可见性的控制,Layer本身就有一个visible属性,这个属性指示的就是当前图层是否在Map中显示。不管是MapServiceLayer还是GraphicLayer,如果设置了visible为false,那么在这个图层是不会被显示的。 除了控制图层是否显示,我们还可以控制图层的透明度,这是由Layer的alpha属性来控制的。这样我们可以将多个图层叠加复合显示,这时候会给用户一种复合的多信息量的地图: 图 22 多图层透明复合效果 另外,图层的叠放顺序也是一个经常遇到的问题,在ArcGIS Flex API中,后加入的地图被放置在最上层,同时,最底层的索引(index)为0。 图 23 Map中Layer的存放顺序 Map中有一个layers属性存放了地图中所有Layer的集合,另外还有layerIds属性存放了对应的所有Layer的id的集合,每当添加一个Layer
ArcGIS RIA开发实践 2
ArcGIS RIA开发实践【Flex篇】 I、 ArcGIS Flex API 基础 一 Flex的历史和现状 Flex的前身是Flash,Flash是极为流行的互联网矢量动画解决方案,目前据统计97%的浏览器都安装有Flash Player插件用以播放swf动画,其中未安装的3%还有很多是因为某些场合的安全限制导致的,可以说Flash是极为普及的RIA平台。 但是由于Flash是一个动画制作软件,其中有很多比如时间轴、影片剪辑等程序员不容易理解的概念,因此Macromedia公司推出了Flex。Flex抛弃了许多动画设计术语,转而使用程序员喜欢的方式开发RIA应用,并且Flex能编译生成可以在Flash Player中运行的swf文件,这无疑吸引了大量程序员,并且实现了和Flash平台的无缝拼接,从而利用Flash平台多年积累的大量素材、美工和设计者。 Adobe公司在2005年收购了Macromedia公司,并在第一时间将Flex/Flash冠以Adobe的商标推向市场,可见其对RIA市场和Flex/Flash的重视。 目前,可以说Adobe Flex/Flash是最流行且最成熟
ArcGIS RIA开发实践 1
ArcGIS RIA开发实践【背景篇】 I RIA介绍 一 RIA相比传统Web应用的优势 RIA作为一个互联网领域越来越火的术语,究其根本在于它相对传统Web应用的诸多优势。RIA作为“富互联网应用”的代名词(Rich Internet Application),从名字上就已经可以看出它最大的特点:Rich,这个Rich是多方面的,包括丰富的表现力、富有交互、内容丰富、基于富客户端引擎等等。同时,RIA是Internet的,它在功能上希望和传统的Web应用一样通用、标准,因此,这也是为什么眼下很多2D/3D效果俱佳、操作人性化的网络游戏不能称为RIA的原因。 传统Web应用的很多不足都来源于HTML的静态性,虽然由于JavaScript脚本的存在可以在浏览器中实现一些客户端交互和效果;同时,Web2.0浪潮推广的AJAX技术也使浏览器和服务器的通讯更及时、页面表现也更友好。但是,传统Web的根基使这些进步都是局限的,在声音、视频、Socket通讯、本地存储这些方面它都捉襟见肘。 RIA则在某种程度上颠覆了传统Web应用的理念和设计。为了能提供客户端更优秀的表现和交互能力,RIA一般会
ArcGIS Server Java ADF 案例教程 35
二 自定义一个地图放大5倍的Functionality【案例】在这个小节,我们去实现一个GISFunctionality去封装前面实现过的使地图放大5倍的功能。首先,当然是新建一个Functionality类并添加到ADF应用中去。前面我们经常通过直接编辑代码的方式去定义类和配置文件,这主要是为了帮助你理解ADF应用的配置和各个元素的相互关系。现在估计你也有一定了解了,我们也就尽量省事些,多使用ArcGIS的eclipse插件去完成这些工作吧。让我们打开eclipse的菜单【ArcGIS】-【Class Templates】-【Functionality】,在新建的窗口上填上我们希望实现的Functionality的包名、类名、实例化 Managed Bean的名称、注册到的Resource等,完成以后ADF会自动新建一个实现GISFunctionality接口的类,并把这个类实例化后注册到 ADF应用的配置文件中去。 图 26 通过ArcGIS的IDE插件添加自定义Functionality 下面我们需要对新生成的这个Functionality类进行编码以实现自己的功能
ArcGIS Server Java ADF 案例教程 33
自定义AJAX请求获得地图范围【案例】比如你现在想随时知道当前地图的边界范围,也就是说每次地图范围更新后,希望服务器可以输出一个包含边界范围的AJAX响应到浏览器,那么首先你需要在用户对地图进行操作的时候发送一个AJAX请求。这个请求你可以在每次地图被更新的时候去调用,比如一开始就通过addUpdateListener给 Map添加一个监听:function onBodyLoad(){ map = EsriControls.maps['map']; map.addUpdateListener("onMapUpdate", onMapUpdate);}function onMapUpdate(){ var formId = map.formId; var url = EsriUtils.getServerUrl(formId); var params = "getMapInfo=true&" + EsriUtils.buildRequestParams(formId); EsriUtils.sendAjaxRequest(url, params, tr
ArcGIS Server Java ADF 案例教程 32
监听AJAX请求并响应当从页面使用JavaScript发送了一个AJAX请求到服务器,服务器就需要对这个请求进行处理,因此这一小节的内容主要就是在服务器端。首先,让我们来了解一些JSF的内容——有关PhaseListener 。所谓的Phase就是JSF请求的阶段,一个JSF请求的生命周期中存在不同的阶段,当用户从页面向服务器发送一个请求的时候,JSF请求的生命周期就开始了。以下就是著名的JSF请求生命周期中6个阶段: 图 23 JSF请求的生命周期 PhaseListener是对JSF请求的阶段进行监听的接口,当某个类实现了这个接口并添加到JSF应用中以后,每当服务器接收到JSF请求,并处理这个请求到某个阶段的时候,这个监听类就会被触发。下面是实现的一个监听自定义AJAX请求的监听类:public class MapUpdatePhaseListener implements PhaseListener{ public void afterPhase(PhaseEvent event) { FacesContext facesContext = eve
ArcGIS Server Java ADF 案例教程 31
自定义的请求和响应 前面用户的请求都是通过Task、Toolbar来执行的,在这一章里,我们将不使用这些ADF组件,来看看没有了它们的帮助,你应该怎么自己发送AJAX请求,或者在原先输出的AJAX响应中添加上一些额外的信息。 一 发送AJAX请求 首先让我们看一下怎么不依靠任何ADF组件的帮助来发送一个AJAX请求,比如,在页面上有一个纯HTML的表单按钮,我们希望点击这个按钮的时候可以发送一个AJAX请求到服务器,应该怎么做? 那就让我们假设这样一个场景:用户点击一个HTML的“放大5倍”按钮,地图就可以放大5倍。要实现这样的功能,当然首先是需要添加一个按钮,这个按钮的onclick事件对应到一个JavaScript函数: function mapZoom() { var formId = map.formId; var url = EsriUtils.getServerUrl(formId); var params = "mapZoom=true&" + EsriUtils.buildRequestParams(formId); EsriUtils.sendAjaxRequest
ArcGIS Server Java ADF 案例教程 28
在上一小节最后说马上要讲Graphic,为了和ADF本身的称呼统一,现在这里我们将其称为GraphicElement。由于Blogger被河蟹了,以前的文章我就先不修改了,下面我们来谈一下GraphicElement。 GraphicElement 要说GraphicElement就得先说WebGraphics,欲用GraphicElement,必先添加WebGraphics,在你的配置文件中你应该可以找到如下的定义: graphics com.esri.adf.web.data.WebGraphics none 这个WebGraphics对象的作用就是在服务器端存放所有你需要动态表示的GraphicElement。当然,现在我们已经很熟悉应该怎么去调用WebGraphics对象了:首先肯定要得到WebContext对象,然后在它的attribute中找到WebGraphics对象。 在WebGraphics对象中添加GraphicElement以后,这些GraphicElement就可以自动在Map中渲染出来,它们和后台服务没有关系,WebGraphics中的对象会在后台服务的上
ArcGIS Server Java ADF 案例教程 29
GraphicElement的符号化GraphicElement的symbol属性是一个WebSymbol 对象,这个对象定义了使用什么符号来表示GraphicElement对象。下面让我们大概看一下有些什么WebSymbol可以为我使用: WebSimpleMarkerSymbol 简单点符号WebSimpleLineSymbol 简单线符号WebSimplePolygonSymbol 简单多边形符号WebPictureMarkerSymbol 图片点符号WebTrueTypeMarkerSymbol TrueType点符号 比如一个简单点符号可以这样定义:WebSimpleMarkerSymbol symbol = new WebSimpleMarkerSymbol();symbol.setMarkerType(WebSimpleMarkerSymbol.STAR);symbol.setAntialiasing(true);symbol.setTransparency(0.7);symbol.setColor("255,255,0");symbol.setOutlineColor(
在Google blogger的日志备份5
02/11/2009 03:59 PM ArcGIS Flex API 的动态投影 以前没关注过这个问题,经过同事提点REST API中有指定投影的请求参数,猜想Flex中也可以。方法如下:url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer"/>url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Petroleum/KGS_OilGasFields_Kansas/MapServer"/>也就是在加载图层的时候,指定Map的Extent(这个Extent通过wkid来指定其空间参考),得出的图则是该空间参考下服务器动态投影生成的图片。下面两图分别是wkid=26777和wkid=4326下同一地图服务的不同表现: 02/04/2009 05:08 PM 免费的矢量导航数据 做GIS很重要的就是数据,事实上这个玩意也很值钱。有时候你想做个演示或者要节省项目成本
在Google blogger的日志备份4
12/11/2008 10:04 AM 使用 FlashDevelop 开发 ArcGIS Flex 应用 【环境】Windows XP SP3,FlashDevelop 3.0.0 Beta9,Flex SDK 3.2,ArcGIS Flex API 1.0如果你对基于Eclipse的Flex Builder的编译和操作不甚满意,常常为它的无端崩溃而心怀不满,更或者,你不倾向于使用收费的Flex Builder(标准版300多美刀),那么,或许你可以尝试一下这个主题的主角——一款开源的Flex IDE:FlashDevelop。FlashDevelop使用MIT许可分发,拥有和Visual Studio风格类似的界面和操作,还拥有插件机制来扩展功能——总而言之,它可以成为FlexBuilder之外开发Flex应用的又一选择。我们可以从 http://www.flashdevelop.org 获取FlashDevelop的安装文件和文档。当你安装Flex Builder的时候,或许你不用操心任何其它组件,包括Flex SDK和Flash Player Debug版本等等都内置在其中。
在Google blogger的日志备份3
10/12/2008 09:46 PM Open API 其实大家都希望开放自己的API以后,吸引开发人员在自己的平台上做点事情。吹得美妙无比,内心都险恶得要死巴不得天底下别的API都死绝了,大家都用我的吧。Open API是一个比云更ws的概念,它的口号就是:我的是我的,你的还是我的。小子,我这里有全套工具,来给我打工吧!好,你就瞎忙活去吧。你要用它的API在它那里实现了什么功能,恭喜你,你已经正式成为了它的免费兼职实习生;你要用它的API在你自己那里使用了什么功能,给它打了广告不说,啥时候你的流量大了,对不起,从今天开始限制访问量,非付费用户每天限制IP500个,不够?交钱啊。这叫什么,消费陷阱啊。所以啊,云啊雾啊开放啥的都是虚的,数据才是根本。有了数据你才有发言权,你才有资本去做云啊雾的,然后对大家招招手说:hey come on,给你露几个接口,用去吧。ok,到时候你也会说:Open API好,云实在是好。 09/18/2008 09:08 AM Android开发简明教程-1.简介 【关于本教程】Android的API文档和APIDemo做的是很不错的,但是Tutori
2009年6月23日星期二
在Google blogger的日志备份1
08/01/2008 09:22 AM 配置ArcGIS Server 9.3 Java开发环境(NetBeans) 【概述】叙述如何在Window下配置ArcGIS Server 9.3的Java开发环境(NetBeans) 【环境】Windows XP SP2,ArcGIS Server 9.3,NetBeans 6.1 先决条件 ArcGIS Server的Java开发首先需要安装Java Web服务器, ArcGIS Server 9.3支持的服务器种类有:Apache TomcatIBM WebSphereJBoss 这里采用的是Tomcat 6.0.16。 下载并安装NetBeans ArcGIS Server 9.3支持的NetBeans版本为6.x,可以从NetBeans网站免费下载:http://download.netbeans.org/netbeans/6.1/final, NetBeans下载包的类型建议选择Web&J2EE;(第一列)。 在开始安装NetBeans时,首先会让你选择是否安装随NetBeans附带的应用服务器——GlashFish或Tom
订阅:
博文 (Atom)