一、关于服务器上下文

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或者空字符串,导致前面的结果。这个故事告诉我,以后一定要小心,小心,再小心啊。。。

最新文章

  1. 一张图说懂java中 private default protected public 的区别
  2. mysql快速导入大量数据问题
  3. iOS 直播类APP开发流程分解:
  4. [ACM_动态规划] 嵌套矩形
  5. [Spring] 事务级别定义
  6. mssqlserver 分日志(日志文件过大)
  7. 一道SQL面试例题 if...else 与聚集函数
  8. AVPlayer的使用本地视频
  9. Android生命周期详细说明
  10. java路径问题总结
  11. Android Activity四种加载方式
  12. 【Base64】JDK里面实现Base64的API
  13. js 转化类似这样的时间( /Date(1389060261000)/)问题
  14. Xcode 不提示, 引用失效等情况
  15. 联想S720/S720i通刷刷机包 Vibe V1.0
  16. Protocol buffers--python 实践(一) 简介以及安装与使用
  17. /usr,/usr/local/ 还是 /opt ?
  18. nodejs 简单安装环境
  19. 第34章 授予类型 - Identity Server 4 中文文档(v1.0.0)
  20. java39

热门文章

  1. 【t099】最接近神的人
  2. [PostgreSQL] Use Foreign Keys to Ensure Data Integrity in Postgres
  3. android安卓开发基础小笔记,添加按钮事件,打开新窗体,窗体传值,回传
  4. 【76.57%】【codeforces 721A】One-dimensional Japanese Crossword
  5. [RxJS] Use RxJS mergeMap to map and merge high order observables
  6. php实现 字符个数统计
  7. 前端开发必备调试工具(Chrome的F12自带的功能和firebug插件差不多)
  8. SDE 空间表操作
  9. Material Designer的低版本兼容实现 —— ActivityOptionsCompat
  10. 免费的 C/C++ 编译&解释 器列表