內蒙古java團隊

          j2se,j2ee開發組
          posts - 139, comments - 212, trackbacks - 0, articles - 65
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          OpenLayers Map理解

          Posted on 2010-11-24 10:03 帥子 閱讀(3981) 評論(0)  編輯  收藏 所屬分類: J2EE技術專區


          1,視口坐標的原點在左上角,水平向右為x軸正向,垂直向下為y 軸正向;
          2,地圖坐標原點為初始圖層的中心點,水平向右為x軸正向,垂直向上為y軸正向;
          3,視口中心點永遠與地圖中心點重合,不一定與瓦片中心點重合;
          4,拖動圖層的邏輯描述:地圖是不動的,視口移動從而展示不同的地圖區域;?
          Resolution:解析度 = 地圖尺寸/視口尺寸好比攝像機,鏡頭拉得越近解析度越小,地圖看得越清晰。?
          map.calculateBounds():地圖當前被查看區域邊界
          map.centerLayerContainer():設置圖層的左和上邊距,保證圖層中心點與地圖中心點重合
          map.getCenter():地圖中心點坐標(地圖坐標,經緯度)
          map.getCurrentSize():取視口尺寸
          map.getExtent():地圖當前欲被查看區域;地圖中心所在區域(經緯度)、視口尺寸乘以解析度
          map.getLonLatFromViewPortPx():視口坐標轉地圖坐標
          map.getMaxExtent():地圖最大可被查看區域(經緯度),視口中心點不可以移出該區域
          map.getResolution():地圖當前解析度
          map.getSize():視口尺寸
          map.getViewPortPxFromLonLat():地圖坐標轉成視口坐標
          map.getZoom():當前縮放級別
          map.pan(x軸方向, y軸方向, options):移動地圖map.setCenter(新的地圖中心點, 縮放級別, 拖動, 強制縮放級別改變):重新設置地圖中心、縮放比例??
          openlayers加載過程
          map = new OpenLayers.Map('map');
          1,?? 創建map對象,參數為展示地圖的Dom元素的id
          a)??????? 定義tileSize(默認256*256)
          b)??????? 定義maxExtent(默認-180, -90, 180, 90)
          c)??????? 定義paddingForPopups(15, 15, 15, 15)
          d)??????? 定義theme(默認theme/default/style.css)
          e)??????? 定義id:"OpenLayers.Map_"+序號
          f)??????? 定義div:為展示地圖的Dom元素
          g)??????? 定義viewPortDiv:視口Dom元素(id:"OpenLayers.Map_"+ 序號 + "_OpenLayers_ViewPort;OVERFLOW: hidden; POSITION: relative;width:"100%";height:"100%";className: "olMapViewport";),作為div的子元素

          h)??????? 定義layerContainerDiv:存放圖層的Dom元素(id:"OpenLayers.Map_"+ 序號 + " _OpenLayers_Container";zIndex:this.Z_INDEX_BASE['Popup']-1;),作為 viewPortDiv的子元素。
          Z_INDEX_BASE: { BaseLayer: 100, Overlay: 325, Popup: 750, Control: 1000 }定義events:object:map;element:div;
          EVENT_TYPES: [ "preaddlayer", "addlayer", "removelayer", "changelayer", "movestart","move", "moveend", "zoomend", "popupopen", "popupclose", "addmarker", "removemarker", "clearmarkers", "mouseover", "mouseout", "mousemove", "dragstart", "drag", "dragend", "changebaselayer"]

          i)??????? 定義events:object: map;element:div; eventTypes:EVENT_TYPES;fallThrough:true
          ???????????????????? i.????????????? 定義object:事件對應的js腳本對象
          ?????????????????? ii.????????????? 定義element:響應瀏覽器事件的Dom元素
          ??????????????? iii.????????????? 定義eventTypes:事件類型
          ?????????????????? iv.????????????? 定義fallThrough:是否穿透(停止事件傳播)
          ????????????????????? v.????????????? 定義listeners:事件監聽者
          ?????????????????? vi.????????????? 定義eventHandler:定義事件處理者:handleBrowserEvent
          ??????????????? vii.????????????? 向listeners中注冊EVENT_TYPES
          ???????????? viii.????????????? 將BROWSER_EVENTS注冊到EVENT_TYPES,在Dom元素element上注冊BROWSER_EVENTS瀏覽器監聽事件執行 eventHandler,在Dom元素element上注冊"dragstart"事件執行OpenLayers.Event.stop。
          BROWSER_EVENTS: ["mouseover", "mouseout","mousedown", "mouseup", "mousemove","click","dblclick","resize", "focus", "blur"]j)??????? updateSize響應"movestart"事件;updateSize響應"resize"事件;

          k)??????? 確保加載theme主題css樣式;

          l)??????? 定義layers:圖層;

          m)??????? 定義controls:(默認:Navigation、PanZoom、ArgParser、Attribution),設置control內部的 map對象,將controls添加到map中

          ????????????????????? i.????????????? Navigation:displayClass:olControlNavigation;events:active/deactive;
          id:OpenLayers.Control.Navigation_ 序號;
          map:地圖對象;handlers.click:dblclick;dragPan、 zoomBox;handlers.wheel:MouseWheel;將要監聽的事件添加到map的listeners中;

          ?????????????????? ii.????????????? PanZoom:position:(4,4);displayClass:olControlPanZoom;events:active/deactive;id:OpenLayers.Control.PanZoom_ 序號;…;添加到viewPortDiv中;

          ??????????????? iii.????????????? ArgParser:displayClass:olControlArgParser;events:active/deactive;id:OpenLayers.Control.ArgParser_ 序號;…;添加到viewPortDiv中;

          ?????????????????? iv.????????????? Attribution:displayClass:olControlAttribution;events:active/deactive;id:OpenLayers.Control.Attribution_ 序號;…;添加到viewPortDiv中;

          n)??????? unloadDestroy:響應瀏覽器卸載事件 var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS",??????????????? "
          2,?? 創建圖層對象

          a)??????? newArguments:name:"OpenLayers WMS", url:"
          b)??????? OpenLayers.Layer.Grid.prototype.initialize: map.addLayers([ol_wms])
          3,?? 將圖層加入到地圖中
          a)??????? layer.div添加到layerContainerDiv

          圖例一

          window

          DOMMouseScroll Handler.MouseWheel.wheelListener
          mousewheel Handler.MouseWheel.wheelListener
          unload Map.unloadDestroy
          ?

          document

          mousewheel Handler.MouseWheel.wheelListener
          ? ?

          Div: map

          Div: Layer.WMS

          blur

          Map.handleBrowserEvent

          ?
          click

          Map.handleBrowserEvent

          ?
          dblclick

          Map.handleBrowserEvent

          ?

          dragstart

          OpenLayers.Event.stop

          ?
          focus

          Map.handleBrowserEvent

          ?
          mousedown

          Map.handleBrowserEvent

          ?
          mousemove

          Map.handleBrowserEvent

          ?
          mouseout

          Map.handleBrowserEvent

          ?
          mouseover

          Map.handleBrowserEvent

          ?
          mouseup

          Map.handleBrowserEvent

          ?
          resize

          Map.handleBrowserEvent

          ?
          ? ? ?

          Div: OpenLayers_Control_PanZoom_panup

          Div: OpenLayers_Control_PanZoom_panleft Div: OpenLayers_Control_PanZoom_panright Div: OpenLayers_Control_PanZoom_pandown Div: OpenLayers_Control_PanZoom_zoomin Div: OpenLayers_Control_PanZoom_zoomworld Div: OpenLayers_Control_PanZoom_zoomout
          click Control.PanZoom.doubleClick
          dblclick Control.PanZoom.doubleClick
          mousedown Control.PanZoom.buttonDown
          ? ?


          ?

          圖例

          Map.events.listeners

          Addlayer Control.Attribution, Control.Attribution.updateAttribution

          addmarker

          ?

          Blur

          ?
          changebaselayer Control.Attribution, Control.Attribution.updateAttribution
          changelayer Control.Attribution, Control.Attribution.updateAttribution
          clearmarkers ?

          Click

          Handler.Drag, handler.Drag.setEvent Handler.Drag, handler.Drag.click Handler.Drag, handler.Drag.setEvent Handler.Drag, handler.Drag.click ?
          Dblclick ?

          Drag

          ?
          Dragend ?

          dragstart

          ?

          Focus

          ?
          mousedown Handler.Drag, handler.Drag.setEvent

          Handler.Drag, handler.Drag. mousedown

          Handler.Click, handler.Click.setEvent Handler.Click, handler.Click.dblclick Handler.Click, handler.Click.setEvent Handler.Click, handler.Click.click Handler.Click, handler.Click.setEvent Handler.Click, handler.Click. mousedown Handler.Drag, handler.Drag.setEvent

          Handler.Drag, handler.Drag. mousedown

          ?

          mousemove

          Handler.Drag, handler.Drag.setEvent Handler.Drag, handler.Drag.mousemove Handler.MouseWheel, Handler.MouseWheel.setEven Handler.MouseWheel, Handler.MouseWheel.mousemove Handler.Drag, handler.Drag.setEvent Handler.Drag, handler.Drag.mousemove ?
          Mouseout Handler.Drag, handler.Drag.setEvent Handler.Drag, handler.Drag.mouseout Handler.Drag, handler.Drag.setEvent Handler.Drag, handler.Drag.mouseout ?

          mouseover

          ?

          Mouseup

          Handler.Drag, handler.Drag.setEvent Handler.Drag, handler.Drag.mouseup Handler.Drag, handler.Drag.setEvent Handler.Drag, handler.Drag.mouseup ?
          Move ?
          Moveend ?
          movestart Map , map. updateSize ?
          popupclose ?
          popupopen ?
          preaddlayer ?
          removelayer

          Control.Attribution, Control.Attribution.updateAttribution

          removemarker ?
          resize

          Map , map. updateSize

          ?
          Zoomend ?
          ?

          Layer.WMS.events.listeners

          blur ?
          click ?
          dblclick ?
          focus ?
          loadcancel ?
          loadend ?
          loadstart ?
          mousedown ?
          mousemove ?
          mouseout ?
          mouseover ?
          mouseup ?
          resize ?
          tileloaded ?
          visibilitychanged ?
          ?


          ?

          ? 圖例

          Control.Navigation.events.listeners

          active ?
          deactive ?
          ?

          Control.PanZoom.events.listeners

          active ?
          deactive ?
          ?

          Control.ArgParser.events.listeners

          active ?
          deactive ?
          ?

          Control.Attribution.events.listeners

          active ?
          deactive ?
          ?

          圖例二

          openlayers圖例.png


          ?

          主站蜘蛛池模板: 南康市| 芜湖市| 蒲江县| 江川县| 大连市| 黔西| 探索| 大埔区| 广灵县| 南开区| 汉中市| 大新县| 阳谷县| 四子王旗| 大化| 应城市| 张北县| 仁布县| 金华市| 大埔区| 清流县| 兴文县| 屏东县| 舟山市| 布拖县| 岳普湖县| 琼海市| 盐津县| 五家渠市| 西青区| 沈阳市| 封丘县| 梅州市| 民权县| 浦县| 阳春市| 靖安县| 定南县| 友谊县| 九台市| 深水埗区|