map has a viewport

This commit is contained in:
Éric Lemoine
2012-08-20 21:41:44 +02:00
parent 189b43ad4a
commit ca2b6e4189
+27 -13
View File
@@ -68,7 +68,7 @@ ol.MapProperty = {
* @enum {number} * @enum {number}
*/ */
ol.MapPaneZIndex = { ol.MapPaneZIndex = {
EVENTS: 1000 VIEWPORT: 1000
}; };
@@ -129,16 +129,22 @@ ol.Map = function(
* @private * @private
* @type {Element} * @type {Element}
*/ */
this.eventsPane_ = goog.dom.createElement(goog.dom.TagName.DIV); this.container_ = container;
this.eventsPane_.className = 'ol-pane-events';
this.eventsPane_.style.position = 'absolute';
// FIXME why can't we use width and height 100% here?
this.eventsPane_.style.width = target.clientWidth + 'px';
this.eventsPane_.style.height = target.clientHeight + 'px';
this.eventsPane_.style.zIndex = ol.MapPaneZIndex.EVENTS;
goog.dom.appendChild(target, this.eventsPane_);
goog.events.listen(this.eventsPane_, [ /**
* @private
* @type {Element}
*/
this.viewport_ = goog.dom.createElement(goog.dom.TagName.DIV);
this.viewport_.className = 'ol-viewport';
this.viewport_.style.position = 'relative';
this.viewport_.style.overflow = 'hidden';
this.viewport_.style.width = '100%';
this.viewport_.style.height = '100%';
this.viewport_.style.zIndex = ol.MapPaneZIndex.VIEWPORT;
goog.dom.appendChild(target, this.viewport_);
goog.events.listen(this.viewport_, [
goog.events.EventType.DBLCLICK goog.events.EventType.DBLCLICK
], this.handleBrowserEvent, false, this); ], this.handleBrowserEvent, false, this);
@@ -148,13 +154,13 @@ ol.Map = function(
this.handleBrowserEvent, false, this); this.handleBrowserEvent, false, this);
this.registerDisposable(keyHandler); this.registerDisposable(keyHandler);
var mouseWheelHandler = new goog.events.MouseWheelHandler(this.eventsPane_); var mouseWheelHandler = new goog.events.MouseWheelHandler(this.viewport_);
goog.events.listen(mouseWheelHandler, goog.events.listen(mouseWheelHandler,
goog.events.MouseWheelHandler.EventType.MOUSEWHEEL, goog.events.MouseWheelHandler.EventType.MOUSEWHEEL,
this.handleBrowserEvent, false, this); this.handleBrowserEvent, false, this);
this.registerDisposable(mouseWheelHandler); this.registerDisposable(mouseWheelHandler);
var dragger = new goog.fx.Dragger(this.eventsPane_); var dragger = new goog.fx.Dragger(this.viewport_);
dragger.defaultAction = function() {}; dragger.defaultAction = function() {};
goog.events.listen(dragger, [ goog.events.listen(dragger, [
goog.fx.Dragger.EventType.START, goog.fx.Dragger.EventType.START,
@@ -167,7 +173,7 @@ ol.Map = function(
* @type {ol.MapRenderer} * @type {ol.MapRenderer}
* @private * @private
*/ */
this.renderer_ = new rendererConstructor(target, this); this.renderer_ = new rendererConstructor(this.viewport_, this);
this.registerDisposable(this.renderer_); this.registerDisposable(this.renderer_);
/** /**
@@ -467,6 +473,14 @@ goog.exportProperty(
ol.Map.prototype.getUserProjection); ol.Map.prototype.getUserProjection);
/**
* @return {Element} Viewport.
*/
ol.Map.prototype.getViewport = function() {
return this.viewport_;
};
/** /**
* @param {goog.events.BrowserEvent} browserEvent Browser event. * @param {goog.events.BrowserEvent} browserEvent Browser event.
* @param {string=} opt_type Type. * @param {string=} opt_type Type.