zoukankan      html  css  js  c++  java
  • arcserver开发小结(二)

    一、关于服务器上下文

    1,服务器上下文(ServerContext)本质上是一个GIS服务器上的进程,它是服务器端编程的起点。

    2,只有本地资源才能得到服务器上下文,通常得到服务器上下文的主线是:

    MapResourceLocal——>ServerContextInfo——>ServerContext

    3,在gis服务器上创建对象,只能通过ServerContext的CreateObject方法,而不能用new关键字,new关键字创建的是在本机上创建,而非gis服务器上。

    4,CreateObject方法中的参数“类ID”不能写错,否则提示“无效的类别字符串”,当初很多时候由于写错了,被系统提示了不少次。

    二、关于回调刷新

    1,如果只刷新普通的html控件的内容,并把回调结果返回给此html控件,或者只是执行一段JavaScript代码

    //回调结果实例
    CallbackResult cr = new CallbackResult("div", "layerListDiv", "innercontent", returnString);//普通html控件
    CallbackResult cr = new CallbackResult(null, null, "javascript", returnString);//js代码
    
    //把回调结果实例增加到地图的回调结果集中
    Map1.CallbackResults.Add(cr);
    
    //以字符串的形式返回地图的回调结果集
    return Map1.CallbackResults.ToString();

    2,只刷新Map控件

    return Map1.CallbackResults.ToString();

    3,刷新Toc控件

    //将Toc1控件的回调结果集添加到Map1中的回调结果集中 Map1.CallbackResults.CopyFrom(Toc1.CallbackResults);
    //返回Map1的回调结果集 return Map1.CallbackResults.ToString();

    回调刷新小结:从上面我们可以知道无论是怎样的回调刷新,最后的回调结果集都要添加到map控件的回调结果集中,这是因为ESRI为我们写好的回调函数processCallbackResult()中对返回的字符串进行了解析,从解析中我们可以看到回调结果都是针对map的。。。

    三、关于MapServer对象

    在实际的开发过程中,我们经常要在gis服务器端编程,从而操作细粒度的AO,其入口是IMapServer对象,通过这个对象,我们可以得到IMapServerObject对象,进一步获取地图文档的核心对象。

    ArcGIS Server 本地资源访问ArcObjects的IMapServer对象有两种方式

    第一种方式

    //直接通过本地资源得到地图服务对象 ImapServer mapServer = mapResourceLocal.MapServer;

    第二种方式

    //得到本地资源的服务上下文
    IserverContext serverContext = mapResourceLocal.ServerContextInfo.ServerContext;
    //通过服务器上下文得到服务对象(IServerObject),并把该服务对象强制转换为地图服务对象(IMapServer)
    IMapServer mapServer = serverContext.ServerObject as IMapServer

    在得到IMapServer对象之后 ,就可以得到IMapServerObject对象了。

    由于MapServerClass类实现了IMapServer接口和IMapServerObject接口,故可对IMapServer进行接口查询(QI)得到IMapServerObject对象了,方法只是进行一次强制转换。

    IMapServerObject mapServerObject = mapServer as IMapServerObject;

     四、关于对 com 组件的调用

     实际arcserver开发过程中,我遇到了很多次弹出内容为“对 com 组件的调用返回了错误 hresult e_fail”的网页警告框,刚开始真是头疼,google了下,也没找到合适自己的内容。后来仔细检查、调试,发现是函数传入参数时发生错误了。比如我们想要传入的参数是一个图层的ID,但是由于不小心,传入的是一个空值null或者空字符串,导致前面的结果。这个故事告诉我,以后一定要小心,小心,再小心啊。。。

  • 相关阅读:
    【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
    【第四篇】ASP.NET MVC快速入门之完整示例(MVC5+EF6)
    【第三篇】ASP.NET MVC快速入门之安全策略(MVC5+EF6)
    【第二篇】ASP.NET MVC快速入门之数据注解(MVC5+EF6)
    【原创】Chrome最新版(53-55)再次爆出BUG!
    AppBox v6.0中实现子页面和父页面的复杂交互
    FineUI(开源版)v6.0中FState服务器端验证的实现原理
    【已更新】【原创】Chrome53 最新版惊现无厘头卡死 BUG!
    FineUI(专业版)v3.2.0 发布(ASP.NET UI控件库)!
    FineUI(专业版)v3.1发布(ASP.NET控件库)!
  • 原文地址:https://www.cnblogs.com/jameslif/p/3929075.html
Copyright © 2011-2022 走看看