Initial port of Control.js and Navigation.js.

This also adds an Events instance to the map, so the Navigation control can register events on the map.

Tests still missing.
This commit is contained in:
ahocevar
2012-06-20 23:21:44 +02:00
parent 4ea2fe3701
commit 6ddda53a70
7 changed files with 203 additions and 720 deletions

View File

@@ -2,6 +2,8 @@ goog.provide('ol.Map');
goog.require('ol.Loc');
goog.require('ol.Projection');
goog.require('ol.event');
goog.require('ol.event.Events');
@@ -53,6 +55,12 @@ ol.Map = function() {
*/
this.layers_ = null;
/**
* @private
* @type {Array}
*/
this.controls_ = null;
/**
* @private
* @type {ol.UnreferencedBounds}
@@ -64,7 +72,21 @@ ol.Map = function() {
* @type {number|undefined}
*/
this.maxRes_ = undefined;
/**
* @private
* @type {ol.event.Events}
*/
this.events_ = new ol.event.Events(
this, undefined, true, [ol.event.drag()]
);
/**
* @private
* @type {Element}
*/
this.container_ = null;
};
/**
@@ -151,6 +173,14 @@ ol.Map.prototype.getLayers = function() {
};
/**
* @return {Array.<ol.control.Control>}
*/
ol.Map.prototype.getControls = function() {
return this.controls_;
};
/**
* @return {ol.UnreferencedBounds} the maxExtent for the map
*/
@@ -257,6 +287,18 @@ ol.Map.prototype.setLayers = function(layers) {
this.layers_ = layers;
};
/**
* @param {Array.<ol.control.Control>} controls
*/
ol.Map.prototype.setControls = function(controls) {
if (!this.controls_) {
for (var i=0, ii=controls.length; i<ii; ++i) {
controls[i].setMap(this);
}
this.controls_ = controls;
}
};
/**
* @param {ol.UnreferencedBounds} extent the maxExtent for the map
*/
@@ -271,6 +313,29 @@ ol.Map.prototype.setMaxRes = function(res) {
this.maxRes_ = res;
};
/**
* @param {Element} container the container to render the map to
*/
ol.Map.prototype.setContainer = function(container) {
this.events_.setElement(container);
this.container_ = container;
};
/**
* @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
*/
ol.Map.prototype.moveByPx = function(dx, dy) {
// call moveByPx on renderers
};
/**
* @export
*/