zoukankan      html  css  js  c++  java
  • IS.NET客户端聚合GoogleMap浅析(一)聚合方法

         熟悉SuperMap产品的朋友都知道,在SuperMap最新发布的RIA产品iClient中,可以通过开源的解析方法叠加GoogleMap缓存数据,而传统的WebGIS开发平台IS.NET却只可以发布Deskpro制作的工作空间中的地图以及标准的WMS和WFS数据,而对于GoogleMap这种只提供API并未提供标准WMS发布服务的缓存数据来说,似乎显得有些无能为力。

         IS.NET真的不能叠加GoogleMap吗,下面我们先分析一下。

         第一是GoogleMap的缓存模式,网络上好多人都对GoogleMap的缓存模式有了详细的研究,在这里我们只不过借鉴一下前人的成果。GoogleMap的各种图层也都是使用瓦片结构的缓存模式,其请求地址是通过图层名称,服务器地址,图片索引和比例尺级别几项来构成的,所以手动解析GoogleMap缓存地址并非难事。这样我们就可以根据请求范围获取图片。如果对GoogleMap缓存模式不是很了解,就Google一下吧。

         现在我们有了GoogleMap的缓存图片,如何叠加呢?显然在数据层是无能为力了,这样就只能寄希望于客户端了,还好IS.NET提供了聚合图幅图层的接口Tilelayer,我们完全可以自定义叠加图幅,同样根据瓦片结构去叠加GoogleMap的缓存。不了解Tilelayer的朋友可以参考IS.NET的联机帮助也可以参考http://www.gisforum.net/bbs/dispbbs.asp?BoardID=21&replyID=3565&ID=160234&skin=1

         到目前为止,理论上似乎我们找到了聚合GoogleMap缓存图片的方法,不过实施起来似乎还需要一些准备。

         首先是数据,由于我们不知要聚合GoogleMap到页面上,我们还需要根据精准的坐标来在GoogleMap上叠加显示自己的数据。这样就需要具备两个条件,一个是GoogleMap的坐标一定要准确,一个是我们的数据一定要符合GoogleMap的坐标系,至于是什么卖个关子,后面详细介绍。

         其次是足够的硬盘空间,我们叠加GoogleMap不能像iClient那样,直接去请求GoogleMap的图片服务器,直接把图片叠加上来,因为GoogleMap的每张瓦片图幅的Bounds是固定的,只能我们去适应它的Bounds,而且GoogleMap的比例尺级别是0-17,也就是说这个级别是自定义的,我们并不知道这个具体的比例尺级别是多少,所以我们当前地图的比例尺永远无法和GoogleMap的比例尺级别对应(我试过去算,不过结果并不满意,应该和精度有关)。从而导致Tilelayer请求的TileBounds永远无法和GoogleMap的图幅范围吻合。所以我们采取下载-组合-裁剪图片方式,为了提高效率,我们需要缓存裁剪后的图片。如果有朋友能解决TileBounds和GoogleMap图幅Bounds吻合的方法,请不吝赐教。

         好,有了上面的讲解我想大家已经对聚合方案有了初步了解,下面我们就将一步步的介绍从数据准备到最后网站开发的全部步骤。

         (注:次方法仅限技术交流,不用于商业使用。)

    源码下载:http://download.csdn.net/source/2518117

  • 相关阅读:
    atitit.插件体系设计总结o73.doc
    Atitit.可视化编程jbpm6 的环境and 使用总结...
    atitit.团队建设总结o6o fix
    atitit.团队建设总结fx O622
    atitit.客户端连接oracle数据库的方式总结
    atitit.提升2--3倍开发效率--cbb体系的建设..
    atitit.微信项目开发效率慢的一些总结
    atitit.为什么java体系开发效率这样低的原因and解决
    atitit.无线网卡 不能搜索到WiFi 无线路由信号的解决不能上网
    atitit.技术选型方法总结为什么java就是比.net有前途
  • 原文地址:https://www.cnblogs.com/yuxichina/p/1761359.html
Copyright © 2011-2022 走看看