<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    內蒙古java團隊

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

    OpenLayers Map理解

    Posted on 2010-11-24 10:03 帥子 閱讀(3984) 評論(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


    ?

    主站蜘蛛池模板: 中国在线观看免费国语版| 亚洲乱码中文论理电影| 性感美女视频在线观看免费精品 | 国产偷伦视频免费观看| 精品国产日韩亚洲一区91| 亚洲一区二区三区深夜天堂| 亚洲宅男天堂在线观看无病毒| 国产成人一区二区三区免费视频| 日本片免费观看一区二区| 人人玩人人添人人澡免费| 久久精品无码专区免费| 疯狂做受xxxx高潮视频免费| 亚洲熟妇无码av另类vr影视| 亚洲成人福利在线| 亚洲五月激情综合图片区| 久久亚洲综合色一区二区三区| 亚洲精品乱码久久久久久不卡| 国产成人无码a区在线观看视频免费 | 免费播放一区二区三区| 成在人线av无码免费高潮水| 美景之屋4在线未删减免费| 亚洲制服丝袜第一页| 亚洲视频在线一区| 亚洲AV永久无码区成人网站| 久久亚洲AV无码西西人体| mm1313亚洲精品无码又大又粗| 尤物永久免费AV无码网站| 成人免费视频网址| 女人让男人免费桶爽30分钟| 欧美男同gv免费网站观看| 在线观看av永久免费| 色婷婷7777免费视频在线观看| 色片在线免费观看| 美女视频黄是免费的网址| 和日本免费不卡在线v| 成年网站免费视频A在线双飞| 无码日韩精品一区二区免费 | 亚洲人成网站在线播放2019| 亚洲午夜理论片在线观看| 亚洲国产精品无码中文lv| 亚洲av成人一区二区三区观看在线|