OpenLayers项目分析——(八)地图表现(续)
来源:互联网 发布:raphael.js绘制流程图 编辑:程序博客网 时间:2024/04/29 11:59
OpenLayers. Layer提供了一个EVENT_TYPES常量,用于支持关于图层的应用事件类型,这些事件有"loadstart", "loadend", "loadcancel", "Visibilitychanged"。
它“固有”的3个属性:id,name,div。其中,id和name是layer的身份,在对图层进行操作的时候,就是用它们标志的。至于div,大家都制知道,DOM元素,用于存放图层。
定义的map、event属性,是图层对象对map、event对象的引用;projection属性,设置默认情况下,地图的投影,同时也设置maxExtent, maxResolution, 和units 。
来看看构造函数:
* name - {String} The layer name * options - {Object} Hashtable of extra options to tag onto the layer */ initialize: function(name, options) { this.addOptions(options); this.name = name; if (this.id == null) { this.id = OpenLayers.Util.createUniqueID(this.CLASS_NAME + "_"); this.div = OpenLayers.Util.createDiv(); this.div.style.width = "100%"; this.div.style.height = "100%"; this.div.id = this.id; this.events = new OpenLayers.Events(this, this.div, this.EVENT_TYPES); } if (this.wrapDateLine) { this.displayOutsideMaxExtent = true; } }OpenLayers中每一个类的构造函数都是以initialize命名的。 再看看其成员函数: destroy函数,相当于析构函数; onMapResize,removeMap 虚函数,提供给子类继承; //移动函数 moveTo:function(bounds, zoomChanged, dragging) { var display = this.visibility; if (!this.isBaseLayer) { display = display && this.inRange; } this.display(display); }
下面一组函数是Baselayer Functions函数,就是layer是Baselayer 的话,所用的函数。
比如,initResolutions、getResolution、getExtent等。
通过这两次的分析,可以发现,Map和Layers的关系:它们是相互引用的。实际上是这样,OpenLayers的Map类主要包含了对每个图层的引用,对每个控件的引用,对事件的引用,对装载容器的引用(其实就是那些map上层的div)以及对pop的引用,而其自身又包含有大量的方法和属性。图层主要包含了对map的引用,对自身div容器的引用以及事件的引用,而图层自身又包含了大量的属性和方法。map引用了layer,而layer又引用了map,这里就直接形成了循环引用关系。
这样的组成和关联关系,每动一下,就会涉及到大量的对象,影响了性能。
- OpenLayers项目分析——(八)地图表现
- OpenLayers项目分析[转](八):地图表现(续)
- OpenLayers项目分析——(八)地图表现(续)
- OpenLayers项目分析——(八)地图表现(续)
- OpenLayers项目分析——(七)地图表现
- OpenLayers项目分析(七)地图表现
- OpenLayers项目分析——(九)地图表现(续)
- OpenLayers项目分析[转](七):地图表现
- OpenLayers 项目分析——(三)BaseTypes (续)
- OpenLayers 项目分析——(四)BaseTypes (续)
- OpenLayers-------地图表现
- OpenLayers-------地图表现
- OpenLayers项目分析——(一)项目介绍
- OpenLayers项目分析——(一)项目介绍
- OpenLayers项目分析——(一)项目介绍
- OpenLayers项目分析——(六)数据渲染分析
- OpenLayers项目分析——(十)事件机制分析
- OpenLayers项目分析——(七)数据渲染分析
- mysql新建用户本地无法登录
- R树空间索引
- CPU的利用率
- MyBatis的分页插件介绍
- HDU1412---{A} + {B}(set实现)
- OpenLayers项目分析——(八)地图表现(续)
- nrf51822蓝牙触摸屏驱动总结
- android messenger 可以实现比aidl轻量化的进程间通信
- 剑指offer 17-合并两个排序表的链表
- 排序算法比较---C++版和java版
- 【资源】最新Android SDK_API_开发包_离线包_下载
- 我爱机器学习网机器学习类别文章汇总
- OpenLayers项目分析——(九)控件
- 设置环境变量(修改.bash_profile文件)