ArcGIS  API 和GIServer

  先后以ArcGIS Server(9.3)和GIServer(2.2)为服务端,以ArcGIS API for Flex(1.2)、ArcGIS API for Silverlight(2.0,2.2)为客户端进行过GIS项目的开发,以及尝试使用GIServer+ArcGIS API for Javascript为客户端进行开发。在使用GIServer作为服务器端,使用Silverlight API 和Javascript API进行开发时,遇到了一个很类似的致命的问题。

  在加载切片地图(在服务器端做过切片的静态地图)的时候,同样的一个API请求,ArcGIS Server和GIServer返回的Json数据是不一样的,从而导致API在其后来的解析过程中出现错误。

一 Silverlight API时的singleFusedMapCache

  假设一个做过切片的地图服务(Map Service)的地址为WMS_URL,则ArcGIS Silverlight API在使用ArcGISTiledMapServiceLayer 类型的图层加载该服务的时候,会先以WMS_URL?f=json的URL发送Get请求,以获取相应的信息,从而进行下一步的处理。此时ArcGIS Server返回的JSON数据中会包含一个“singleFusedMapCache”的键,来声明对应的地图服务的类型,而GIServer返回的JSON数据则没有此信息,因此,以GIServer为服务端时,API则会认定此服务的singleFusedMapCache为false,从而告知用户:该图层不能使用ArcGISTiledMapServiceLayer 来加载。从服务地址对应的页面上其实也能够看的出来:

                             

可以看到GIServer发布的服务比ArcGIS Server发布的服务少了一个关键的属性。 
 Javascript API时的再次封装

  同样使用上述的假设的地图服务的地址,Javascript API在加载服务时,同样会先进行以Get请求,来获取信息,不过url有所不同,此次为WMS_URL ?f=json&callback=dojo.io.script.jsonp_dojoIoScript1._js,来表名此次的请求时针对javascript的。此时ArcGIS Server的返回数据如下图所示

是以dojo.io.script.jsonp_dojoIoScript1._js(为前缀再次封装后的json数据,而GIServer的返回值则如下图所示

,只是纯粹的json数据。因此Javascript API在后续的解析中便出现了错误,无法继续下去。

  上述问题肯定也是有办法解决的,毕竟GIServer是一个开源的软件,读一读源代码,修改修改估计也是可行的。还有一个方式,就是重写相关的类比如重写ArcGISTiledMapServiceLayer ,自定义一个layer去请求相应的地图信息等等。想必,聪明如你,必定有合适自己的解决方式吧!

原文地址:http://www.cnblogs.com/loveclumsybaby/archive/2012/04/24/2468822.html

ArcGIS API 和GIServer的更多相关文章

  1. arcgis api for js入门开发系列八聚合效果(含源代码)

    上一篇实现了demo的图层控制模块,本篇新增聚合效果,截图如下(源代码见文章底部): 聚合效果实现的思路如下: 1.map.html引用聚合包,项目已经包含进来了的聚合文件夹: <script ...

  2. arcgis api for js入门开发系列七图层控制(含源代码)

    上一篇实现了demo的地图分屏对比模块,本篇新增图层控制模块,截图如下(源代码见文章底部): 图层控制模块实现的思路如下: 1.在地图配置文件map.config.js里面配置图层目录树节点信息,作为 ...

  3. arcgis api for js入门开发系列六地图分屏对比(含源代码)

    上一篇实现了demo的地图标绘模块,本篇新增地图地图分屏对比模块,截图如下(源代码见文章底部): 对效果图的简单介绍一下,在demo只采用了两分屏对比,感兴趣的话,可以在两分屏的基础上拓展,修改css ...

  4. arcgis api for js入门开发系列五地图态势标绘(含源代码)

    上一篇实现了demo的地图查询功能,本篇新增地图态势标绘模块,截图如下: 本篇核心的在于调用API的Draw工具:https://developers.arcgis.com/javascript/3/ ...

  5. arcgis api for js入门开发系列四地图查询(含源代码)

    备注:由于实现本篇功能的需求,修改了地图数据的dlsearch.mxd,然后更新了地图服务,需要的在文章最后有提供最新的mxd以及源代码下载的 上一篇实现了demo的地图工具栏,本篇新增地图查询功能, ...

  6. arcgis api for js入门开发系列三地图工具栏(含源代码)

    上一篇实现了demo的地图加载展示,在上篇实现的基础上,新增了地图工具栏以及通用地图控件功能,比如地图框选缩放.地图漫游.清空.量算工具.地图导航控件.地图比例尺控件.地图鹰眼图等等,总共分为5个部分 ...

  7. arcgis api for js入门开发系列二不同地图服务展示(含源代码)

    上一篇介绍了arcgis api离线部署,这篇开始正式介绍arcgis api for js开发:想要学习webgis开发,首先得熟悉了解前端技术,比如界面布局设计的html+css,核心的是java ...

  8. arcgis api for js入门开发系列一arcgis api离线部署

    在我的GIS之家QQ群里,很多都是arcgis api for js开发的新手,他们一般都是GIS专业的学生,或者从计算机专业刚刚转向来的giser,他们难免会遇到各种webgis开发的简单问题,由于 ...

  9. arcgis api for js共享干货系列之二自定义Navigation控件样式风格

    arcgis api for js默认的Navigation控件样式风格如下图: 这样的风格不能说不好,各有各的爱好,审美观,这里也不是重点,这里的重点是如何自定义一套自己喜欢的样式风格呢:自己自定义 ...

随机推荐

  1. 在Eclipse中安装python插件的方法

    一个博士给了我一堆代码,原本以为是C++或者java写的,结果是python,我压根没学过呀,不过本着语言都是相通的原则,我硬着头皮开始学习Python,当然先学习安装IDE(以前学习一门新语言,我会 ...

  2. 左侧菜单栏,有对个li对应一个content

    html部分截图 不多说直接上js /*左侧导航栏*/var sect=$(".sect"); $(".nav-list .nav-a").each(funct ...

  3. python 创建一次性,快速的小型web服务

  4. c#devexpres TreeList 最简单显示动态值的应用

    为了让数据显示在行内,也为熟练一下devexpress treelist  控件, 查找了很多,最多的是先把数据放在datatable  表里边, 然后赋值给treelist的datasource 的 ...

  5. glide install失败 Update failed for golang.org/x/net: Cannot detect VCS

    失败信息: [WARN]    Unable to checkout golang.org/x/net[ERROR]    Update failed for golang.org/x/net: Ca ...

  6. C++中 左值和右值的区别

    总结: C++11中所有的值属于左值,右值两者之一. 左值引用:指的是可以放在赋值表达式左边的事物——在堆上或者栈上分配的命名对象或者其他对象成员——有明确的内存地址. 对左值的const引用创建临时 ...

  7. (转)HTTP 错误 404.2 - Not Found 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面

    详细错误:HTTP 错误 404.2 - Not Found. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面. 出现环境:win7 + IIS7.0 解决办法 ...

  8. hdu 2066 ( 最短路) Floyd & Dijkstra & Spfa

    http://acm.hdu.edu.cn/showproblem.php?pid=2066 今天复习了一下最短路和最小生成树,发现居然闹了个大笑话-----我居然一直写的是Floyd,但我自己一直以 ...

  9. Docker原生网络技术简介

    Docker原生网络技术简介 默认网络 在宿主机部署好Docker Engine后会默认创建三种网络:Bridge.Host和None,如下: docker network ls NETWORK ID ...

  10. Android.FamousBlogs

    1. cyrilmottier http://cyrilmottier.com/ http://cyrilmottier.com/about/ 2. greenrobot http://greenro ...