Don't create a class for map options

This commit is contained in:
Tom Payne
2012-09-26 12:48:34 +02:00
parent 013e6c6320
commit e7063953d7
2 changed files with 27 additions and 14 deletions
+1 -1
View File
@@ -92,7 +92,7 @@ ol.Map = function(container, mapOptionsLiteral, opt_viewportSizeMonitor) {
this.logger = goog.debug.Logger.getLogger('ol.map.' + goog.getUid(this)); this.logger = goog.debug.Logger.getLogger('ol.map.' + goog.getUid(this));
} }
var mapOptions = new ol.MapOptions(mapOptionsLiteral); var mapOptions = ol.MapOptions.create(mapOptionsLiteral);
/** /**
* @type {ol.TransformFunction} * @type {ol.TransformFunction}
+26 -13
View File
@@ -1,5 +1,6 @@
goog.provide('ol.MapOptions'); goog.provide('ol.MapOptions');
goog.provide('ol.MapOptionsLiteral'); goog.provide('ol.MapOptionsLiteral');
goog.provide('ol.MapOptionsType');
goog.provide('ol.RendererHint'); goog.provide('ol.RendererHint');
goog.require('ol.Collection'); goog.require('ol.Collection');
@@ -73,47 +74,54 @@ ol.DEFAULT_RENDERER_HINTS = [
ol.MapOptionsLiteral; ol.MapOptionsLiteral;
/**
* @typedef {{rendererConstructor:
* function(new: ol.renderer.Map, Element, ol.Map),
* values: Object.<string, *>}}
*/
ol.MapOptionsType;
/** /**
* @constructor
* @param {ol.MapOptionsLiteral} mapOptionsLiteral Map options. * @param {ol.MapOptionsLiteral} mapOptionsLiteral Map options.
* @return {ol.MapOptionsType} Map options.
*/ */
ol.MapOptions = function(mapOptionsLiteral) { ol.MapOptions.create = function(mapOptionsLiteral) {
/** /**
* @type {Object.<string, *>} * @type {Object.<string, *>}
*/ */
this.values = {}; var values = {};
if (goog.isDef(mapOptionsLiteral.center)) { if (goog.isDef(mapOptionsLiteral.center)) {
this.values[ol.MapProperty.CENTER] = mapOptionsLiteral.center; values[ol.MapProperty.CENTER] = mapOptionsLiteral.center;
} }
this.values[ol.MapProperty.INTERACTIONS] = values[ol.MapProperty.INTERACTIONS] =
goog.isDef(mapOptionsLiteral.interactions) ? goog.isDef(mapOptionsLiteral.interactions) ?
mapOptionsLiteral.interactions : mapOptionsLiteral.interactions :
ol.MapOptions.createInteractions_(mapOptionsLiteral); ol.MapOptions.createInteractions_(mapOptionsLiteral);
this.values[ol.MapProperty.LAYERS] = goog.isDef(mapOptionsLiteral.layers) ? values[ol.MapProperty.LAYERS] = goog.isDef(mapOptionsLiteral.layers) ?
mapOptionsLiteral.layers : new ol.Collection(); mapOptionsLiteral.layers : new ol.Collection();
this.values[ol.MapProperty.PROJECTION] = ol.MapOptions.createProjection_( values[ol.MapProperty.PROJECTION] = ol.MapOptions.createProjection_(
mapOptionsLiteral.projection, 'EPSG:3857'); mapOptionsLiteral.projection, 'EPSG:3857');
if (goog.isDef(mapOptionsLiteral.resolution)) { if (goog.isDef(mapOptionsLiteral.resolution)) {
this.values[ol.MapProperty.RESOLUTION] = mapOptionsLiteral.resolution; values[ol.MapProperty.RESOLUTION] = mapOptionsLiteral.resolution;
} else if (goog.isDef(mapOptionsLiteral.zoom)) { } else if (goog.isDef(mapOptionsLiteral.zoom)) {
this.values[ol.MapProperty.RESOLUTION] = values[ol.MapProperty.RESOLUTION] =
ol.Projection.EPSG_3857_HALF_SIZE / (128 << mapOptionsLiteral.zoom); ol.Projection.EPSG_3857_HALF_SIZE / (128 << mapOptionsLiteral.zoom);
} }
this.values[ol.MapProperty.USER_PROJECTION] = ol.MapOptions.createProjection_( values[ol.MapProperty.USER_PROJECTION] = ol.MapOptions.createProjection_(
mapOptionsLiteral.userProjection, 'EPSG:4326'); mapOptionsLiteral.userProjection, 'EPSG:4326');
/** /**
* @type {function(new: ol.renderer.Map, Element, ol.Map)} * @type {function(new: ol.renderer.Map, Element, ol.Map)}
*/ */
this.rendererConstructor = ol.renderer.Map; var rendererConstructor = ol.renderer.Map;
/** /**
* @type {Array.<ol.RendererHint>} * @type {Array.<ol.RendererHint>}
@@ -132,17 +140,22 @@ ol.MapOptions = function(mapOptionsLiteral) {
rendererHint = rendererHints[i]; rendererHint = rendererHints[i];
if (rendererHint == ol.RendererHint.DOM) { if (rendererHint == ol.RendererHint.DOM) {
if (ol.ENABLE_DOM && ol.renderer.dom.isSupported()) { if (ol.ENABLE_DOM && ol.renderer.dom.isSupported()) {
this.rendererConstructor = ol.renderer.dom.Map; rendererConstructor = ol.renderer.dom.Map;
break; break;
} }
} else if (rendererHint == ol.RendererHint.WEBGL) { } else if (rendererHint == ol.RendererHint.WEBGL) {
if (ol.ENABLE_WEBGL && ol.renderer.webgl.isSupported()) { if (ol.ENABLE_WEBGL && ol.renderer.webgl.isSupported()) {
this.rendererConstructor = ol.renderer.webgl.Map; rendererConstructor = ol.renderer.webgl.Map;
break; break;
} }
} }
} }
return {
rendererConstructor: rendererConstructor,
values: values
};
}; };