用户操作
[即时聊天] [发私信] [加为好友]
小粟ID:suen
142592次访问,排名562好友40人,关注者84
爱好技术,爱好开源,在华工学过计算机,在武测学过GIS,国家认证系统分析师,曾负责或参与中国科学院开放基金、国家基础测绘科技计划、国家自然科学基金、××市人防指挥地理信息系统、境界数据建库、地图网站等多个项目。因热心GIS技术传播而获得“CSDN地理信息专家”称号,虽然自己觉得离专家的差距还很大,但一直在努力,^-^。
suen的文章
原创 39 篇
翻译 5 篇
转载 41 篇
评论 65 篇
小粟的公告
终于完成GeoWeb开源社区(http://www.gisdev.cn)的搭建和初步测试,请大家注册用户,测试,并提出宝贵意见。
最近评论
douweibin:我也建了一个群 群号是 51824242 也做您的后备群用吧 呵呵
sparkwong3:#common22 发表于2008-08-07 15:54:58 IP: 119.40.19.*
不知道你注意到没有 百度地图其实用的是mapbar的图片引擎

对的
chenshengbj:你好!我想问一下,怎么用GDAL类库对栅格影像进行矢量化?GDAL提供矢量多边形的最小外包矩形的接口吗?我的邮箱是chenshengbj@163.com,希望给我好消息。我继续这几个功能。
xbt746:呵呵,为什么不用postgresql试试
xbt746:呵呵,为什么不用postgresql试试
文章分类
收藏
    相册
    我的照片
    GIS
    .NET开源GIS翻译WiKi
    GeoWeb开源社区
    GIS空间站
    GIS论坛
    中科院地理所
    国家测绘局
    我的旧BLOG归档
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    转载 OpenLayers 项目分析[转](二):源代码总体结构分析收藏

    新一篇: OpenLayers 项目分析[转](三):BaseTypes | 旧一篇: OpenLayers项目分析[转](一):项目介绍

    (二)源代码总体结构分析

    为了让更多的人看到这篇好文章,我把它转载到这里,这篇文章转载自http://www.3snews.net/html/24/10624-17441.html,原文作者如觉得不妥,可联系我删除之。

      通过前面的项目介绍,我们大概已经知道Openlayers是什么,能够做什么,有什么意义。接下来我们分析它怎么样,以及怎样实现的等问题。

      这个图是从它的文档上截取的,旨在从感官上认识一下OpenLayers的类。下面分别介绍(文档中的类是按字母顺序排列的,也按这个顺序说吧):

      我们看到在类的顶层“高高在上”的是OpenLayers,它为整个项目实现提供名称空间(JavaScript语言没有名称空间一说,但是它确实有自己的机制实现类似的功能,后面会说明),它直接拥有一常量 VERSION_NUMBER,以标识版本。

      Ajax顾名思义,用于实现Ajax功能,只是OpenLayers的开发者们把它单独写到一个类里了,其中用到了Prototype.js框架里的一些东西。同时,设计的时候也考虑了跨浏览器的问题。

      BaseTypes这里定制了OpenLayers中用到的string,number  function。比如,OpenLayers. String. startsWith,用于测试一个字符串是否一以另一个字符串开头;OpenLayers. Number. limitSigDigs,用于限制整数的有效数位;OpenLayers. Function.bind,用于把某一函数绑定于对象等等。

      ConsoleOpenLayers.Console,此名称空间用于调试和把错误等输出到“控制台”上,需要结合使用../Firebug/firebug.js。

      Control我们通常所说的控件类,它提供各种各样的控件,比如上节中说的图层开关LayerSwitcher,编辑工具条EditingToolbar等等。加载控件的例子

            class = new OpenLayers.Map('map', { controls: [] });

        map.addControl(new OpenLayers.Control.PanZoomBar());

        map.addControl(new OpenLayers.Control.MouseToolbar());

      Events用于实现OpenLayers的事件机制。具体来说,OpenLayers中的事件分为两种,一种是浏览器事件,例如mouseup,mousedown之类的;另外一种是自定义的,如addLayer之类的。OpenLayers中的事件机制是非常值得我们学习的,后面将具体讨论。

      Feature我们知道:Feature是geography 和attributes的集合。在OpenLayers中,特别地OpenLayers.Feature 类由一个marker 和一个lonla组成。

    OpenLayers. Feature.WFS与OpenLayers. Feature. Vector继承于它。

      Format:此类用于读/写各种格式的数据,它的子类都分别创建了各个格式的解析器。这些格式有:XMLGML、GeoJSONGeoRSS、JSON、KML、WFS、WKT(Well-Known Text)

      Geometry怎么翻译呢,几何?是对地理对象的描述。它的子类有Collection、Curve、LinearRing、LineString、MultiLineString、MultiPoint、MultiPolygon、Point、Polygon、Rectangle、Surface,正是这些类的实例,构成了我们看到的地图。需要说明的是,Surface 类暂时还没有实现。

      Handler:这个类用于处理序列事件,可被激活和取消。同时,它也有命名类似于浏览器事件的方法。当一个handler 被激活,处理事件的方法就会被注册到浏览器监听器listener ,以响应相应的事件;当一个handler被取消,这些方法在事件监听器中也会相应的被取消注册。Handler通过控件control被创建,而control通过icon表现。

      Icon在计算机屏幕上以图标的形式呈现,有url、尺寸size和位置position3个属性。一般情况,它与 OpenLayers.Marker结合应用,表现为一个Marker

      Layer:图层。

      Map网业中动态地图。它就像容器,可向里面添加图层Layer和控件Control。实际上,单个Map是毫无意义的,正是Layer和Control成就了它。

      Marker它的实例是OpenLayers.LonLat 和OpenLayers.Icon的集合。通俗一点儿说,Icon附上一定的经纬度就是Marker。

    它们的组合关系是:

      Popup地图上一个小巧的层,实现地图“开关”功能。使用例子:

          Class = new OpenLayers.Popup("chicken",

                       new OpenLayers.LonLat(5,40),

                       new OpenLayers.Size(200,200),

                       "example popup",

                       true);

          map.addPopup(popup);

      Renderer渲染类。在OpenLayers中,渲染功能是作为矢量图层的一个属性存在的,我们称之为渲染器,矢量图层就是通过这个渲染器提供的方法将矢量数据显示出来。以SVG和VML为例,继承关系是这样的:    

     

    至于OpenLayers. Renderer. Elements为什么要存在,以及它的渲染机制,后面会说。

      Tile设计这个类用于指明单个“瓦片”Tile,或者更小的分辨率。Tiles存储它们自身的信息,比如url和size等。它的类继承关系如下:

        

      Util:“跑龙套”的类。

      写到这里,可以看到OpenLayers 的类缠绕的挺麻烦的,接下来的文章将从代码部分分析更细部的东西。


    发表于 @ 2008年05月08日 13:16:00|评论(loading...)|编辑

    新一篇: OpenLayers 项目分析[转](三):BaseTypes | 旧一篇: OpenLayers项目分析[转](一):项目介绍

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 小粟