.net与RIA的GIS杂货铺

导航

公告

统计

2006年12月9日 #

Flex RIA的ArcIMS WebGIS之路(二)--一切从servlet开始

  甲:地图从哪里来?
     乙:废话,当然是从ArcIMS来!
     甲:怎么从ArcIMS来?
     乙:看ArcIMS宝卷ArcXML_Programmers_Ref!
     甲:
     于是在漫无目的的寻找中发现了servlet,原来ArcIMS服务器都是通过servlet来接收请求发送响应的,看来得想办法让Flex访问这个servlet发送数据还要能接收数据才行。怎么办,怎么办?外事问Google,内事问Baidu,在那么多不是我想要的网页搜索结果中找到了urlRequest和urlLoader,这就是地图之源。
      给urlRequest个ArcIMS的servlet路径,定义一个Request方法(当然是POST),将请求内容塞给它,剩下的事情就给urlLoader去做吧。
//发送ArcXML的请求
  //request 发送的ArcXML请求
  //customerService 自定义服务名称 例如“Query”
  //-------------------------------------------------------------------
  public function SendArcXML(request:String, customerService:String):void
  {
   var url:String = "http://"+this.m_serverName+"/servlet/com.esri.esrimap.Esrimap?ServiceName="+this.m_serviceName+"&ClientVersion=4.0";
   if (customerService != "")
    url += "&CustomService=" + customerService;
   m_urlRequest.url = url; 
   m_urlRequest.method ="POST";
   m_urlRequest.data = request;
   try {
                m_urlLoader.load(m_urlRequest);
            } catch (error:Error) {
                mx.controls.Alert.show("发送请求错误","IMS请求",4,null);
            }
  }
要注意urlLoader与.net里面的httpRequest不一样,是异步获取数据的因此数据要在事件处理中获得
  private function completeHandler(event:Event):void {
            var loader:URLLoader = URLLoader(event.target);
            this.m_data = loader.data;
            //Alert.show(m_data);
            DispatchLoadComplete();
        }
唉!还得为IMSConnection设计自定义事件
public static var LOADCOMPLETE:String ="IMSLoadCompelete";
//添加LOADCOMPLETE事件代理
  public function DispatchLoadComplete():void
  {
   var e:Event = new Event(IMSConnection.LOADCOMPLETE);
   dispatchEvent(e);
  }
PS:到现在项目有个暂时的名称了FlashIMSEngine

posted @ 2006-12-09 10:27 Brune 阅读(601) 评论(0) 编辑

Flex RIA的ArcIMS WebGIS之路(一)--胸中的那棵竹

      在重构流行的年代,有人轻视了最初设计,只想着通过重构来改善设计,这样的重构是没有方向的重构。用Flex开发ArcIMS的一个好处就是C/S的设计方案与模式基本上都可以用上。首先设计好一个Flex的WebGIS结构然后再开发编码的目的就明确的多。
      三年来做的ArcEngine开发让我感觉到ESRI的接口封的太牛了,但是IMS,似乎除了ActiveX Connector(java 不考虑)没有啥好的开发包,咱们也依葫芦画瓢吧,ActiveX Connector的结构比较落伍了,怎么说也得向Engine靠拢,这就是项目的第一大部分地图组件库,工作量巨大啊,首先写一个IMSConnection,接下来写Map,LayerCollection,DisplayTranformation,FieldCollection,Layer,Field,各种Goemetry,Renderer,Symbol,Filter更不用说了(相信写过AO的人都明白),都是用ActionScript敲出来的代码啊!幸好ActionScript3完全面向对象了。项目的第二部分就是交互框架,一个词--拿来主义,咱们用Flash的脚本语言写一个MapHook,封装ICommand,ITool效果还真不赖!这些一下来就是一个迷你的ArcEngine还是用Flash写的访问ArcIMS的,接下来具体工程的时候相信做过AO的人都知道,不停的实现ICommand,ITool。
      胸中的竹子有了,就要开始画咯!

posted @ 2006-12-09 10:05 Brune 阅读(704) 评论(3) 编辑

ArcIMS开发--Atlas还是Flex?

      早在毕业前看过这两块的资料,读书的时候没有做过B/S,只是作为常识性的了解了一下,没有想到这么快要碰到了,既然开始做WebGIS就不能再用传统的开发方式了,怎么说也得和Web2.0绑上吧。完全陌生的领域,问题摆在了面前基于ajax的atlas和在Flash中运行的Flex,那个方案好?
      atlas当时(10月)Beta还没有出来,由于前辈以前积累了比较多的javacript代码更倾向于Atlas+asp.net+.Net Link的方式,于是分了工,我负责写dll开发一个给asp.net调用的地图组件库(想想IMS9.2出来就要废弃sigh),前辈写前台,有时候也辅助前辈看点前台,发觉目前仅用上了UpdatePanel和ScriptManager其他特性还没有用上,没有这方面经验的我只能提供很简单的帮助,以前的C/S经验完全不适合。
      很自然的想到了Flex,至少我看到了Interface,Extends还有EventListner,于是私下开始做了Flex的ArcIMS开发以后再说。下面开始写Flex的ArcIMS开发笔记咯

posted @ 2006-12-09 09:34 Brune 阅读(486) 评论(0) 编辑