精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
OpenLayers項目完整分析——(二)源代碼總體結構分析-睜眼瞎看-3sN...

OpenLayers 項目完整分析——(二)源代碼總體結構分析

上一篇 / 下一篇  2008-01-07 23:33:48 / 個人分類:OpenLayers

 

(二)源代碼總體結構分析

  通過前面的項目介紹,我們大概已經知道 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,用于把某一函數綁定于對象等等。

   Console OpenLayers.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: 此類用于讀/寫各種格式的數據,它的子類都分別創建了各個格式的解析器。這些格式有: XML GML、GeoJSON GeoRSS、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 的類纏繞的挺麻煩的,接下來的文章將從代碼部分分析更細部的東西。


本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
OpenLayers-繪制圖元
抓取和分析網頁的類源代碼
????專題:Android應用程序消息處理機制(Looper、Handler)分析
全球地震系統的可視化
openlayers6繪制扇形(附源碼下載)
javascript – OpenLayers:使用來自外部地圖的調用添加時無法關閉彈出窗口
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 津南区| 介休市| 嘉祥县| 松江区| 基隆市| 鄯善县| 呼玛县| 慈利县| 洛扎县| 延寿县| 汝阳县| 南充市| 西宁市| 刚察县| 扎囊县| 峨边| 鲁山县| 淅川县| 宝清县| 上饶市| 绥宁县| 崇阳县| 成武县| 东明县| 仙游县| 海安县| 厦门市| 巴马| 龙井市| 苏尼特左旗| 连山| 琼结县| 上饶市| 托克逊县| 嘉峪关市| 景泰县| 南充市| 兰西县| 天全县| 德安县| 石嘴山市|