make ol.Map inherit from goog.EventTarget, and add an ol.handler.Drag

This commit is contained in:
Éric Lemoine
2012-06-28 22:33:29 +02:00
parent d8e8e55b44
commit 946cd33350
5 changed files with 91 additions and 113 deletions
+20 -22
View File
@@ -3,25 +3,28 @@ goog.provide('ol.Map');
goog.require('ol.Loc');
goog.require('ol.Bounds');
goog.require('ol.Projection');
goog.require('ol.event');
goog.require('ol.event.Events');
goog.require('ol.control.Control');
goog.require('ol.renderer.MapRenderer');
goog.require('ol.handler.Drag');
goog.require('goog.dom');
goog.require('goog.math');
goog.require('goog.asserts');
goog.require('goog.events.EventTarget');
/**
* @export
* @constructor
* @extends {goog.events.EventTarget}
*
* @event layeradd Fires when a layer is added to the map. The event object
* contains a 'layer' property referencing the added layer.
*/
ol.Map = function() {
goog.base(this);
/**
* @private
* @type {ol.Projection}
@@ -100,21 +103,20 @@ ol.Map = function() {
*/
this.staticOverlay_ = null;
/**
* @private
* @type {ol.event.Events}
*/
this.events_ = new ol.event.Events(
this, undefined, false, ['drag', 'scroll']
);
/**
* @private
* @type {Element}
*/
this.container_ = null;
/**
* @private
* @type {ol.handler.Drag}
*/
this.dragHandler_ = null;
};
goog.inherits(ol.Map, goog.events.EventTarget);
/**
@const
@@ -140,7 +142,7 @@ ol.Map.DEFAULT_TILE_SIZE = 256;
@const
@type {Array.<string>}
*/
ol.Map.DEFAULT_CONTROLS = ["attribution", "navigation", "zoom"];
ol.Map.DEFAULT_CONTROLS = ["navigation"];
/**
* @return {ol.Loc} Map center in map projection.
@@ -394,7 +396,7 @@ ol.Map.prototype.addLayers = function(layers) {
for (var i=0, ii=layers.length; i<ii; ++i) {
layer = layers[i];
this.layers_.push(layer);
this.events_.triggerEvent('layeradd', {'layer': layer});
this.dispatchEvent({type: 'layeradd', 'layer': layer});
}
this.conditionallyRender();
};
@@ -470,11 +472,12 @@ ol.Map.prototype.setViewport = function() {
'class': 'ol-viewport',
'style': 'width:100%;height:100%;top:0;left:0;position:relative;overflow:hidden'
}));
this.dragHandler_ = new ol.handler.Drag(this, this.viewport_);
}
this.events_.setElement(this.viewport_);
goog.dom.appendChild(this.container_, this.viewport_);
};
ol.Map.prototype.createRenderer = function() {
var Renderer = ol.renderer.MapRenderer.pickRendererType(
ol.Map.preferredRenderers);
@@ -495,13 +498,6 @@ ol.Map.prototype.createRenderer = function() {
}
};
/**
* @return {ol.event.Events} the events instance for this map
*/
ol.Map.prototype.getEvents = function() {
return this.events_;
};
/**
* @param {number} dx pixels to move in x direction
* @param {number} dy pixels to move in x direction
@@ -541,13 +537,15 @@ ol.Map.prototype.getStaticOverlay = function() {
};
/**
* @export
* @inheritDoc
*/
ol.Map.prototype.destroy = function() {
ol.Map.prototype.disposeInternal = function() {
goog.base(this, 'disposeInternal');
//remove layers, etc.
for (var key in this) {
delete this[key];
}
this.dragHandler_.dispose();
};