zoukankan      html  css  js  c++  java
  • ArcGIS API 和GIServer

    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

  • 相关阅读:
    mysql触发器
    mysql存储过程
    怎样理解阻塞非阻塞与同步异步的区别?
    常用的排序算法的时间复杂度和空间复杂度
    Struts+Hibernate+Spring面试题合集及答案
    springMVC面试题
    Mybatis面试题合集及答案
    Java基础面试题集(二)
    Java基础面试题集(一)
    Spring----EJB
  • 原文地址:https://www.cnblogs.com/qiernonstop/p/3727889.html
Copyright © 2011-2022 走看看