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控件
3,刷新Toc控件
//返回Map1的回调结果集 return Map1.CallbackResults.ToString();
回调刷新小结:从上面我们可以知道无论是怎样的回调刷新,最后的回调结果集都要添加到map控件的回调结果集中,这是因为ESRI为我们写好的回调函数processCallbackResult()中对返回的字符串进行了解析,从解析中我们可以看到回调结果都是针对map的。。。
三、关于MapServer对象
在实际的开发过程中,我们经常要在gis服务器端编程,从而操作细粒度的AO,其入口是IMapServer对象,通过这个对象,我们可以得到IMapServerObject对象,进一步获取地图文档的核心对象。
ArcGIS Server 本地资源访问ArcObjects的IMapServer对象有两种方式
第一种方式
第二种方式
//得到本地资源的服务上下文
IserverContext serverContext = mapResourceLocal.ServerContextInfo.ServerContext;
//通过服务器上下文得到服务对象(IServerObject),并把该服务对象强制转换为地图服务对象(IMapServer)
IMapServer mapServer = serverContext.ServerObject as IMapServer
在得到IMapServer对象之后 ,就可以得到IMapServerObject对象了。
由于MapServerClass类实现了IMapServer接口和IMapServerObject接口,故可对IMapServer进行接口查询(QI)得到IMapServerObject对象了,方法只是进行一次强制转换。
四、关于对 com 组件的调用
实际arcserver开发过程中,我遇到了很多次弹出内容为“对 com 组件的调用返回了错误 hresult e_fail”的网页警告框,刚开始真是头疼,google了下,也没找到合适自己的内容。后来仔细检查、调试,发现是函数传入参数时发生错误了。比如我们想要传入的参数是一个图层的ID,但是由于不小心,传入的是一个空值null或者空字符串,导致前面的结果。这个故事告诉我,以后一定要小心,小心,再小心啊。。。
最新文章
- 一张图说懂java中 private default protected public 的区别
- mysql快速导入大量数据问题
- iOS 直播类APP开发流程分解:
- [ACM_动态规划] 嵌套矩形
- [Spring] 事务级别定义
- mssqlserver 分日志(日志文件过大)
- 一道SQL面试例题 if...else 与聚集函数
- AVPlayer的使用本地视频
- Android生命周期详细说明
- java路径问题总结
- Android Activity四种加载方式
- 【Base64】JDK里面实现Base64的API
- js 转化类似这样的时间( /Date(1389060261000)/)问题
- Xcode 不提示, 引用失效等情况
- 联想S720/S720i通刷刷机包 Vibe V1.0
- Protocol buffers--python 实践(一) 简介以及安装与使用
- /usr,/usr/local/ 还是 /opt ?
- nodejs 简单安装环境
- 第34章 授予类型 - Identity Server 4 中文文档(v1.0.0)
- java39
热门文章
- 【t099】最接近神的人
- [PostgreSQL] Use Foreign Keys to Ensure Data Integrity in Postgres
- android安卓开发基础小笔记,添加按钮事件,打开新窗体,窗体传值,回传
- 【76.57%】【codeforces 721A】One-dimensional Japanese Crossword
- [RxJS] Use RxJS mergeMap to map and merge high order observables
- php实现 字符个数统计
- 前端开发必备调试工具(Chrome的F12自带的功能和firebug插件差不多)
- SDE 空间表操作
- Material Designer的低版本兼容实现 —— ActivityOptionsCompat
- 免费的 C/C++ 编译&;解释 器列表