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",                "http://labs.metacarta.com/wms/vmap0?", {layers: 'basic'},                options);

2,   创建图层对象

a)        newArguments:name:"OpenLayers WMS", url:"http://labs.metacarta.com/wms/vmap0?", params:{layers: 'basic'}, options:resolutions: [1.40625,0.703125,0.3515625];
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 Map理解的更多相关文章

  1. OpenLayers.Map的一些特殊事件

    开年上班的第二天,无意中看到一些没见过的事件,特地来给广大人民群众报个信. 众所周知的,map里面的 eventListeners 支持的事件挺多的,比如: var map = new OpenLay ...

  2. map 理解

    键值对 map会将同名的值覆盖掉 public static void main(String[] args) { Map<String,String> maptest=new HashM ...

  3. List,set,Map理解

    集合 集合与数组 数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用. 集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用. ...

  4. 使用 Code Map 理解复杂代码1 ——Visual Studio2012

    第一次知道code map是在Visual Studio Ultimate 2012自带的解说上面,当时认为十分好奇,所以查了查.结果一查就是好几天.原来Visual Studio Ultimate  ...

  5. openlayers 加载瓦片详解 一

    在这先说点题外话,本人在研究webgl 三维球过程中惊人发现,openlayers 的开发人员也在研究webgl并经证实他们也正在研发基于 webgl的三维gis开源平台,这可能是首个开源的三维平台, ...

  6. OpenLayers中的球面墨卡托投影

    最近看OpenLayers,研究到地图投影时找到官方的文档,就翻译了一下,由于英文能力差,翻译不好的地方,请看原文 原文地址:http://docs.openlayers.org/library/sp ...

  7. OpenLayers项目分析——(一)项目介绍

    OpenLayers 是由MetaCarta公司开发的,用于WebGIS客户端的JavaScript包,目前的最高版本是2.7 V,通过BSD License 发行.它实现访问地理空间数据的方法都符合 ...

  8. OpenLayers图层

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...

  9. openlayers中实现点的拖拽(modify),在layer中增加修改删除point。

    最近忙着整地图,都忘记了总结来沉淀自己,自我检讨一下. 总结一下最近使用openlayer时学习的内容,先说下我的业务逻辑吧,在室内地图中 1,点击新增在地图上新增一个可以拖拽的点,拖拽完成后确定位置 ...

随机推荐

  1. “System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常---解决方案

    "System.Data.SqlClient.SqlConnection"的类型初始值设定项引发异常 问题出在了 .net 的C:\WINDOWS\Microsoft.NET\Fr ...

  2. Razor 视图引擎 – ASP.NET MVC 4 系列

           Razor 视图引擎是 ASP.NET MVC 3 开始扩展的内容,并且也是默认视图引擎.        Razor 通过理解标记的结构来实现代码和标记之间尽可能顺畅的转换.下面的例子演 ...

  3. ASP.NET SignalR 与 LayIM2.0 配合轻松实现Web聊天室(十二) 代码重构使用反射工厂解耦(一)缓存切换

    前言 上一篇中,我们用了反射工厂来解除BLL和UI层耦合的问题.当然那是最简单的解决方法,再复杂一点的程序可能思路相同,但是在编程细节中需要考虑的就更多了,比如今天我在重构过程中遇到的问题.也是接下来 ...

  4. css 多个不定数量提交按钮居中显示,纯css解决

    前几天在公司修改一个css 多个按钮居中问题,其实这样的问题很多前端程序员都遇到过,举个例子吧: 在一行中有三个按钮或是两个按钮...个数不定,然后间距固定:然后就有很多人把所有按钮放到一个div中, ...

  5. OC宏和常量

    1.通常常量的定义const放在最前面: 2.宏的定义 #define TAG_ID 101,注意:宏名称和值之间没有等号,宏定义的末尾也不需要分号

  6. 64位weblogic11g安装

    oracle官网上下载的weblogic就是全功能版本,下面是下载 64bit  weblogic 等待下载中…… 下载完成后运行 jar 文件(不会运行jar 的请自己百度) 运行时出现如下 原因是 ...

  7. docker底层技术概览

    docker解决了云计算环境难于分发并且管理复杂,而用KVM.Xen等虚拟化又浪费系统资源的问题.Docker最初是基于lxc构建了容器引擎,为了提供跨平台支持,后又专门开发了libcontainer ...

  8. 在ESXi 5.x 和 ESXi 6.0.x 中如何安装第三方供应商开发的驱动程序

    在 VMware ESXi 5.x 和 ESXi 6.0.x 中如何下载并安装异步驱动程序 (2076262)   Symptoms 免责声明:本文为 How to download and inst ...

  9. loss function与cost function

    实际上,代价函数(cost function)和损失函数(loss function 亦称为 error function)是同义的.它们都是事先定义一个假设函数(hypothesis),通过训练集由 ...

  10. Spring IoC容器总结(未完)

    在面向对象系统中,对象封装了数据和对数据的处理,对象的依赖关系常常体现在对数据和方法的依赖上.这些依赖关系可以通过把对象的依赖注入交给框架或IOC容器来完成,这种从具体对象手中交出控制的做法是非常有价 ...