From 7413770a46dfc100a7944529cad37c65c13d355b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 20 Jun 2012 18:08:51 +0200 Subject: [PATCH] add an ol.layer.xyz factory --- src/api/layer/xyz.js | 29 +++++++++++++++++++++++++++++ src/ol.js | 1 + test/index.html | 1 + test/spec/api/layer/xyz.test.js | 17 +++++++++++++++++ 4 files changed, 48 insertions(+) create mode 100644 src/api/layer/xyz.js create mode 100644 test/spec/api/layer/xyz.test.js diff --git a/src/api/layer/xyz.js b/src/api/layer/xyz.js new file mode 100644 index 0000000000..4f5a051a9c --- /dev/null +++ b/src/api/layer/xyz.js @@ -0,0 +1,29 @@ +goog.provide('ol.layer.xyz'); + +/** + * @export + * @param {Object} opt_arg Config object. + * @return {ol.layer.XYZ} + */ +ol.layer.xyz = function(opt_arg) { + if (opt_arg instanceof ol.layer.XYZ) { + return opt_arg; + } + + /** @type {string} */ + var url; + + var usage = 'ol.layer.xyz accepts an object with a "url" property'; + + if (goog.isObject(opt_arg)) { + url = opt_arg['url']; + } else { + throw new Error(usage); + } + + if (!goog.isDef(url)) { + throw new Error(usage); + } + + return new ol.layer.XYZ(url); +}; diff --git a/src/ol.js b/src/ol.js index 0c7bc7ed0c..44cfaca8f3 100644 --- a/src/ol.js +++ b/src/ol.js @@ -5,6 +5,7 @@ goog.require('ol.event.Events'); goog.require("ol.map"); goog.require("ol.loc"); goog.require("ol.projection"); +goog.require("ol.layer.xyz"); goog.require("ol.Tile"); goog.require("ol.TileSet"); goog.require("ol.geom.geometry"); diff --git a/test/index.html b/test/index.html index 2dd5c917a3..1aae5a2d53 100644 --- a/test/index.html +++ b/test/index.html @@ -52,6 +52,7 @@ + diff --git a/test/spec/api/layer/xyz.test.js b/test/spec/api/layer/xyz.test.js new file mode 100644 index 0000000000..e64c363e19 --- /dev/null +++ b/test/spec/api/layer/xyz.test.js @@ -0,0 +1,17 @@ +describe('ol.layer.xyz', function() { + + it("doesn't allow empty construction", function() { + + expect(function() { + // nowhere + var layer = ol.layer.xyz(); + }).toThrow(); + + }); + + it("creates an ol.layer.XYZ instance", function() { + var layer = ol.layer.xyz({url: 'http://foo/{x}/{y}/{z}'}); + expect(layer).toBeA(ol.layer.XYZ); + }); + +});