s/ol3/ol/

This commit is contained in:
Tom Payne
2012-09-24 14:21:41 +02:00
parent 6737220b83
commit f8c31ba45c
112 changed files with 3755 additions and 3755 deletions

4
.gitignore vendored
View File

@@ -1,6 +1,6 @@
/bin/plovr*.jar /bin/plovr*.jar
/build/ol3.js /build/ol.js
/build/ol3-compiled.js /build/ol-compiled.js
/build/webgl-debug.js /build/webgl-debug.js
/demos/*/advanced-optimizations.* /demos/*/advanced-optimizations.*
/demos/*/build.html /demos/*/build.html

View File

@@ -1,5 +1,5 @@
PLOVR_JAR=bin/plovr-4b3caf2b7d84.jar PLOVR_JAR=bin/plovr-4b3caf2b7d84.jar
SRC_OL3 = $(shell find externs src/ol3 -name \*.js) SRC = $(shell find externs src/ol -name \*.js)
TARGETS = $(shell find demos -name advanced-optimizations.js -o -name simple-optimizations.js) TARGETS = $(shell find demos -name advanced-optimizations.js -o -name simple-optimizations.js)
comma := , comma := ,
empty := empty :=
@@ -9,16 +9,16 @@ space := $(empty) $(empty)
all: build demos all: build demos
.PHONY: build .PHONY: build
build: build/ol3-compiled.js build/webgl-debug.js build: build/ol-compiled.js build/webgl-debug.js
build/ol3-compiled.js: $(PLOVR_JAR) $(SRC_OL3) base.json \ build/ol-compiled.js: $(PLOVR_JAR) $(SRC) base.json \
build/ol3.json build/ol3.js build/ol.json build/ol.js
java -jar $(PLOVR_JAR) build build/ol3.json >$@ java -jar $(PLOVR_JAR) build build/ol.json >$@
@echo $@ "uncompressed:" $$(wc -c <$@) bytes @echo $@ "uncompressed:" $$(wc -c <$@) bytes
@echo $@ " compressed:" $$(gzip -9 -c <$@ | wc -c) bytes @echo $@ " compressed:" $$(gzip -9 -c <$@ | wc -c) bytes
build/ol3.js: $(SRC_OL3) build/ol.js: $(SRC)
( echo "goog.require('goog.dom');" ; find src/ol3 -name \*.js | xargs grep -rh ^goog.provide | sort | uniq | sed -e 's/provide/require/g' ) > $@ ( echo "goog.require('goog.dom');" ; find src/ol -name \*.js | xargs grep -rh ^goog.provide | sort | uniq | sed -e 's/provide/require/g' ) > $@
.PHONY: demos .PHONY: demos
demos: demos/proj4js demos/side-by-side demos/two-layers demos: demos/proj4js demos/side-by-side demos/two-layers
@@ -29,10 +29,10 @@ demos/proj4js: \
demos/proj4js/debug.html demos/proj4js/debug.html
demos/proj4js/build.html: demos/proj4js/index.html.in demos/proj4js/build.html: demos/proj4js/index.html.in
sed -e 's|@SRC@|../../build/ol3.js|' $< > $@ sed -e 's|@SRC@|../../build/ol.js|' $< > $@
demos/proj4js/debug.html: demos/proj4js/index.html.in demos/proj4js/debug.html: demos/proj4js/index.html.in
sed -e 's|@SRC@|http://localhost:9810/compile?id=ol3|' $< > $@ sed -e 's|@SRC@|http://localhost:9810/compile?id=ol|' $< > $@
.PHONY: demos/side-by-side .PHONY: demos/side-by-side
demos/side-by-side: \ demos/side-by-side: \
@@ -45,7 +45,7 @@ demos/side-by-side: \
demos/side-by-side/advanced-optimizations.html: demos/side-by-side/index.html.in demos/side-by-side/advanced-optimizations.html: demos/side-by-side/index.html.in
sed -e 's|@SRC@|advanced-optimizations.js|' $< > $@ sed -e 's|@SRC@|advanced-optimizations.js|' $< > $@
demos/side-by-side/advanced-optimizations.js: $(PLOVR_JAR) $(SRC_OL3) base.json \ demos/side-by-side/advanced-optimizations.js: $(PLOVR_JAR) $(SRC) base.json \
demos/side-by-side/side-by-side.json demos/side-by-side/side-by-side.js demos/side-by-side/side-by-side.json demos/side-by-side/side-by-side.js
java -jar $(PLOVR_JAR) build demos/side-by-side/side-by-side.json >$@ java -jar $(PLOVR_JAR) build demos/side-by-side/side-by-side.json >$@
@echo $@ "uncompressed:" $$(wc -c <$@) bytes @echo $@ "uncompressed:" $$(wc -c <$@) bytes
@@ -58,7 +58,7 @@ demos/side-by-side/simple-optimizations.html: demos/side-by-side/index.html.in
sed -e 's|@SRC@|simple-optimizations.js|' $< > $@ sed -e 's|@SRC@|simple-optimizations.js|' $< > $@
# FIXME invoke plovr directly, rather than assuming that the server is running # FIXME invoke plovr directly, rather than assuming that the server is running
demos/side-by-side/simple-optimizations.js: $(PLOVR_JAR) $(SRC_OL3) base.json \ demos/side-by-side/simple-optimizations.js: $(PLOVR_JAR) $(SRC) base.json \
demos/side-by-side/side-by-side.json demos/side-by-side/side-by-side.js demos/side-by-side/side-by-side.json demos/side-by-side/side-by-side.js
curl 'http://localhost:9810/compile?id=demo-side-by-side&mode=SIMPLE' > $@ curl 'http://localhost:9810/compile?id=demo-side-by-side&mode=SIMPLE' > $@
@echo $@ "uncompressed:" $$(wc -c <$@) bytes @echo $@ "uncompressed:" $$(wc -c <$@) bytes
@@ -75,7 +75,7 @@ demos/two-layers: \
demos/two-layers/advanced-optimizations.html: demos/two-layers/index.html.in demos/two-layers/advanced-optimizations.html: demos/two-layers/index.html.in
sed -e 's|@SRC@|advanced-optimizations.js|' $< > $@ sed -e 's|@SRC@|advanced-optimizations.js|' $< > $@
demos/two-layers/advanced-optimizations.js: $(PLOVR_JAR) $(SRC_OL3) base.json \ demos/two-layers/advanced-optimizations.js: $(PLOVR_JAR) $(SRC) base.json \
demos/two-layers/two-layers.json demos/two-layers/two-layers.js demos/two-layers/two-layers.json demos/two-layers/two-layers.js
java -jar $(PLOVR_JAR) build demos/two-layers/two-layers.json >$@ java -jar $(PLOVR_JAR) build demos/two-layers/two-layers.json >$@
@echo $@ "uncompressed:" $$(wc -c <$@) bytes @echo $@ "uncompressed:" $$(wc -c <$@) bytes
@@ -88,7 +88,7 @@ demos/two-layers/simple-optimizations.html: demos/two-layers/index.html.in
sed -e 's|@SRC@|simple-optimizations.js|' $< > $@ sed -e 's|@SRC@|simple-optimizations.js|' $< > $@
# FIXME invoke plovr directly, rather than assuming that the server is running # FIXME invoke plovr directly, rather than assuming that the server is running
demos/two-layers/simple-optimizations.js: $(PLOVR_JAR) $(SRC_OL3) base.json \ demos/two-layers/simple-optimizations.js: $(PLOVR_JAR) $(SRC) base.json \
demos/two-layers/two-layers.json demos/two-layers/two-layers.js demos/two-layers/two-layers.json demos/two-layers/two-layers.js
curl 'http://localhost:9810/compile?id=demo-two-layers&mode=SIMPLE' > $@ curl 'http://localhost:9810/compile?id=demo-two-layers&mode=SIMPLE' > $@
@echo $@ "uncompressed:" $$(wc -c <$@) bytes @echo $@ "uncompressed:" $$(wc -c <$@) bytes
@@ -96,11 +96,11 @@ demos/two-layers/simple-optimizations.js: $(PLOVR_JAR) $(SRC_OL3) base.json \
.PHONY: serve .PHONY: serve
serve: $(PLOVR_JAR) serve: $(PLOVR_JAR)
java -jar $(PLOVR_JAR) serve build/ol3.json demos/*/*.json java -jar $(PLOVR_JAR) serve build/ol.json demos/*/*.json
.PHONY: lint .PHONY: lint
lint: lint:
gjslint --strict --limited_doc_files=$(subst $(space),$(comma),$(shell find externs -name \*.js)) $(SRC_OL3) $(filter-out $(TARGETS),$(shell find demos -name \*.js)) gjslint --strict --limited_doc_files=$(subst $(space),$(comma),$(shell find externs -name \*.js)) $(SRC) $(filter-out $(TARGETS),$(shell find demos -name \*.js))
build/webgl-debug.js: build/webgl-debug.js:
curl https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/debug/webgl-debug.js > $@ curl https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/debug/webgl-debug.js > $@
@@ -110,8 +110,8 @@ $(PLOVR_JAR):
clean: clean:
rm -f build/all.js rm -f build/all.js
rm -f build/ol3.js rm -f build/ol.js
rm -f build/ol3-compiled.js rm -f build/ol-compiled.js
rm -f demos/*/*.html rm -f demos/*/*.html
rm -f demos/*/advanced-optimizations.* rm -f demos/*/advanced-optimizations.*
rm -f demos/*/simple-optimizations.* rm -f demos/*/simple-optimizations.*

View File

@@ -1,10 +1,10 @@
{ {
"id": "ol3", "id": "ol",
"inherits": "../base.json", "inherits": "../base.json",
"inputs": "build/ol3.js", "inputs": "build/ol.js",
"output-wrapper": "(function(){%output%})();" "output-wrapper": "(function(){%output%})();"

View File

@@ -1,14 +1,14 @@
goog.require('goog.dom'); goog.require('goog.dom');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.Projection'); goog.require('ol.Projection');
var outputElement = document.getElementById('output'); var outputElement = document.getElementById('output');
var point, transformedPoint; var point, transformedPoint;
point = new ol3.Coordinate(-626172.13571216376, 6887893.4928337997); point = new ol.Coordinate(-626172.13571216376, 6887893.4928337997);
transformedPoint = ol3.Projection.transformWithCodes( transformedPoint = ol.Projection.transformWithCodes(
point, 'GOOGLE', 'WGS84'); point, 'GOOGLE', 'WGS84');
outputElement.appendChild(goog.dom.createTextNode(transformedPoint.toString())); outputElement.appendChild(goog.dom.createTextNode(transformedPoint.toString()));
@@ -17,7 +17,7 @@ Proj4js.defs['EPSG:21781'] =
'+x_0=600000 +y_0=200000 +ellps=bessel ' + '+x_0=600000 +y_0=200000 +ellps=bessel ' +
'+towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs'; '+towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs';
point = new ol3.Coordinate(7.439583333333333, 46.95240555555556); point = new ol.Coordinate(7.439583333333333, 46.95240555555556);
transformedPoint = ol3.Projection.transformWithCodes( transformedPoint = ol.Projection.transformWithCodes(
point, 'EPSG:4326', 'EPSG:21781'); point, 'EPSG:4326', 'EPSG:21781');
outputElement.appendChild(goog.dom.createTextNode(transformedPoint.toString())); outputElement.appendChild(goog.dom.createTextNode(transformedPoint.toString()));

View File

@@ -1,13 +1,13 @@
goog.require('goog.debug.Console'); goog.require('goog.debug.Console');
goog.require('goog.debug.Logger'); goog.require('goog.debug.Logger');
goog.require('goog.debug.Logger.Level'); goog.require('goog.debug.Logger.Level');
goog.require('ol3.CoordinateFormat'); goog.require('ol.CoordinateFormat');
goog.require('ol3.RendererHint'); goog.require('ol.RendererHint');
goog.require('ol3.control.Attribution'); goog.require('ol.control.Attribution');
goog.require('ol3.control.MousePosition'); goog.require('ol.control.MousePosition');
goog.require('ol3.createMap'); goog.require('ol.createMap');
goog.require('ol3.interaction.Keyboard'); goog.require('ol.interaction.Keyboard');
goog.require('ol3.layer.MapQuestOpenAerial'); goog.require('ol.layer.MapQuestOpenAerial');
if (goog.DEBUG) { if (goog.DEBUG) {
@@ -17,22 +17,22 @@ if (goog.DEBUG) {
var layer = new ol3.layer.MapQuestOpenAerial(); var layer = new ol.layer.MapQuestOpenAerial();
var layers = new ol3.Collection(); var layers = new ol.Collection();
layers.push(layer); layers.push(layer);
var domMap = ol3.createMap( var domMap = ol.createMap(
document.getElementById('domMap'), document.getElementById('domMap'),
{'layers': layers}, {'layers': layers},
ol3.RendererHint.DOM); ol.RendererHint.DOM);
domMap.setCenter(new ol3.Coordinate(0, 0)); domMap.setCenter(new ol.Coordinate(0, 0));
domMap.setResolution(layer.getStore().getResolutions()[0]); domMap.setResolution(layer.getStore().getResolutions()[0]);
var webglMap = ol3.createMap( var webglMap = ol.createMap(
document.getElementById('webglMap'), document.getElementById('webglMap'),
{}, {},
ol3.RendererHint.WEBGL); ol.RendererHint.WEBGL);
if (!goog.isNull(webglMap)) { if (!goog.isNull(webglMap)) {
webglMap.bindTo('center', domMap); webglMap.bindTo('center', domMap);
webglMap.bindTo('layers', domMap); webglMap.bindTo('layers', domMap);
@@ -40,23 +40,23 @@ if (!goog.isNull(webglMap)) {
webglMap.bindTo('rotation', domMap); webglMap.bindTo('rotation', domMap);
} }
var attributionControl = new ol3.control.Attribution(domMap); var attributionControl = new ol.control.Attribution(domMap);
document.getElementById('attribution').appendChild( document.getElementById('attribution').appendChild(
attributionControl.getElement()); attributionControl.getElement());
var domMousePositionControl = new ol3.control.MousePosition(domMap, var domMousePositionControl = new ol.control.MousePosition(domMap,
ol3.Projection.getFromCode('EPSG:4326'), ol3.CoordinateFormat.hdms, ol.Projection.getFromCode('EPSG:4326'), ol.CoordinateFormat.hdms,
'&nbsp;'); '&nbsp;');
document.getElementById('domMousePosition').appendChild( document.getElementById('domMousePosition').appendChild(
domMousePositionControl.getElement()); domMousePositionControl.getElement());
var webglMousePositionControl = new ol3.control.MousePosition(webglMap, var webglMousePositionControl = new ol.control.MousePosition(webglMap,
ol3.Projection.getFromCode('EPSG:4326'), ol3.CoordinateFormat.hdms, ol.Projection.getFromCode('EPSG:4326'), ol.CoordinateFormat.hdms,
'&nbsp;'); '&nbsp;');
document.getElementById('webglMousePosition').appendChild( document.getElementById('webglMousePosition').appendChild(
webglMousePositionControl.getElement()); webglMousePositionControl.getElement());
var keyboardInteraction = new ol3.interaction.Keyboard(); var keyboardInteraction = new ol.interaction.Keyboard();
keyboardInteraction.addCallback('0', function() { keyboardInteraction.addCallback('0', function() {
layer.setBrightness(0); layer.setBrightness(0);
layer.setContrast(0); layer.setContrast(0);

View File

@@ -1,39 +1,39 @@
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.RendererHint'); goog.require('ol.RendererHint');
goog.require('ol3.control.Attribution'); goog.require('ol.control.Attribution');
goog.require('ol3.createMap'); goog.require('ol.createMap');
goog.require('ol3.layer.BingMaps'); goog.require('ol.layer.BingMaps');
goog.require('ol3.layer.TileJSON'); goog.require('ol.layer.TileJSON');
var layer1 = new ol3.layer.BingMaps( var layer1 = new ol.layer.BingMaps(
ol3.BingMapsStyle.AERIAL, ol.BingMapsStyle.AERIAL,
'AheP841R-MsLErKQChaTba_xDoOCl40-EeTubD9uNhNAyQTePwFY9iVD1_pyqqlE'); 'AheP841R-MsLErKQChaTba_xDoOCl40-EeTubD9uNhNAyQTePwFY9iVD1_pyqqlE');
var layer2 = new ol3.layer.TileJSON( var layer2 = new ol.layer.TileJSON(
'http://api.tiles.mapbox.com/v3/mapbox.va-quake-aug.jsonp'); 'http://api.tiles.mapbox.com/v3/mapbox.va-quake-aug.jsonp');
var layers = new ol3.Collection([layer1, layer2]); var layers = new ol.Collection([layer1, layer2]);
var webglMap = ol3.createMap( var webglMap = ol.createMap(
document.getElementById('webglMap'), document.getElementById('webglMap'),
{'layers': new ol3.Collection([layer1, layer2])}, {'layers': new ol.Collection([layer1, layer2])},
ol3.RendererHint.WEBGL); ol.RendererHint.WEBGL);
goog.events.listen(layer2, goog.events.EventType.LOAD, function() { goog.events.listen(layer2, goog.events.EventType.LOAD, function() {
webglMap.setUserCenter(new ol3.Coordinate(-77.93254999999999, 37.9555)); webglMap.setUserCenter(new ol.Coordinate(-77.93254999999999, 37.9555));
webglMap.setResolution(layer2.getStore().getResolutions()[5]); webglMap.setResolution(layer2.getStore().getResolutions()[5]);
}); });
var domMap = ol3.createMap( var domMap = ol.createMap(
document.getElementById('domMap'), document.getElementById('domMap'),
{}, {},
ol3.RendererHint.DOM); ol.RendererHint.DOM);
domMap.bindTo('center', webglMap); domMap.bindTo('center', webglMap);
domMap.bindTo('layers', webglMap); domMap.bindTo('layers', webglMap);
domMap.bindTo('resolution', webglMap); domMap.bindTo('resolution', webglMap);
domMap.bindTo('rotation', webglMap); domMap.bindTo('rotation', webglMap);
var attributionControl = new ol3.control.Attribution(webglMap); var attributionControl = new ol.control.Attribution(webglMap);
document.getElementById('attribution').appendChild( document.getElementById('attribution').appendChild(
attributionControl.getElement()); attributionControl.getElement());

View File

@@ -1,4 +1,4 @@
goog.provide('ol3.array'); goog.provide('ol.array');
goog.require('goog.array'); goog.require('goog.array');
@@ -8,7 +8,7 @@ goog.require('goog.array');
* @param {number} target Target. * @param {number} target Target.
* @return {number} Index. * @return {number} Index.
*/ */
ol3.array.binaryFindNearest = function(arr, target) { ol.array.binaryFindNearest = function(arr, target) {
var index = goog.array.binarySearch(arr, target, function(a, b) { var index = goog.array.binarySearch(arr, target, function(a, b) {
return b - a; return b - a;
}); });
@@ -35,7 +35,7 @@ ol3.array.binaryFindNearest = function(arr, target) {
* @param {number} target Target. * @param {number} target Target.
* @return {number} Index. * @return {number} Index.
*/ */
ol3.array.linearFindNearest = function(arr, target) { ol.array.linearFindNearest = function(arr, target) {
var n = arr.length; var n = arr.length;
if (arr[0] <= target) { if (arr[0] <= target) {
return 0; return 0;

46
src/ol/array_test.js Normal file
View File

@@ -0,0 +1,46 @@
goog.require('goog.testing.jsunit');
goog.require('ol.array');
function testBinaryFindNearest() {
var arr = [1000, 500, 100];
assertEquals(0, ol.array.binaryFindNearest(arr, 10000));
assertEquals(0, ol.array.binaryFindNearest(arr, 1000));
assertEquals(0, ol.array.binaryFindNearest(arr, 900));
assertEquals(1, ol.array.binaryFindNearest(arr, 750));
assertEquals(1, ol.array.binaryFindNearest(arr, 550));
assertEquals(1, ol.array.binaryFindNearest(arr, 500));
assertEquals(1, ol.array.binaryFindNearest(arr, 450));
assertEquals(2, ol.array.binaryFindNearest(arr, 300));
assertEquals(2, ol.array.binaryFindNearest(arr, 200));
assertEquals(2, ol.array.binaryFindNearest(arr, 100));
assertEquals(2, ol.array.binaryFindNearest(arr, 50));
}
function testLinearFindNearest() {
var arr = [1000, 500, 100];
assertEquals(0, ol.array.linearFindNearest(arr, 10000));
assertEquals(0, ol.array.linearFindNearest(arr, 1000));
assertEquals(0, ol.array.linearFindNearest(arr, 900));
assertEquals(1, ol.array.linearFindNearest(arr, 750));
assertEquals(1, ol.array.linearFindNearest(arr, 550));
assertEquals(1, ol.array.linearFindNearest(arr, 500));
assertEquals(1, ol.array.linearFindNearest(arr, 450));
assertEquals(2, ol.array.linearFindNearest(arr, 300));
assertEquals(2, ol.array.linearFindNearest(arr, 200));
assertEquals(2, ol.array.linearFindNearest(arr, 100));
assertEquals(2, ol.array.linearFindNearest(arr, 50));
}

58
src/ol/attribution.js Normal file
View File

@@ -0,0 +1,58 @@
goog.provide('ol.Attribution');
goog.require('ol.CoverageArea');
goog.require('ol.Projection');
/**
* @constructor
* @param {string} html HTML.
* @param {Array.<ol.CoverageArea>=} opt_coverageAreas Coverage areas.
* @param {ol.Projection=} opt_projection Projection.
*/
ol.Attribution = function(html, opt_coverageAreas, opt_projection) {
/**
* @private
* @type {string}
*/
this.html_ = html;
/**
* @private
* @type {Array.<ol.CoverageArea>}
*/
this.coverageAreas_ = opt_coverageAreas || null;
/**
* @private
* @type {ol.Projection}
*/
this.projection_ = opt_projection || null;
};
/**
* @return {Array.<ol.CoverageArea>} Coverage areas.
*/
ol.Attribution.prototype.getCoverageAreas = function() {
return this.coverageAreas_;
};
/**
* @return {string} HTML.
*/
ol.Attribution.prototype.getHtml = function() {
return this.html_;
};
/**
* @return {ol.Projection} Projection.
*/
ol.Attribution.prototype.getProjection = function() {
return this.projection_;
};

View File

@@ -4,20 +4,20 @@
* @see https://developers.google.com/maps/documentation/javascript/reference * @see https://developers.google.com/maps/documentation/javascript/reference
*/ */
goog.provide('ol3.Collection'); goog.provide('ol.Collection');
goog.provide('ol3.CollectionEvent'); goog.provide('ol.CollectionEvent');
goog.provide('ol3.CollectionEventType'); goog.provide('ol.CollectionEventType');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.events.Event'); goog.require('goog.events.Event');
goog.require('ol3.Object'); goog.require('ol.Object');
/** /**
* @enum {string} * @enum {string}
*/ */
ol3.CollectionEventType = { ol.CollectionEventType = {
ADD: 'add', ADD: 'add',
INSERT_AT: 'insert_at', INSERT_AT: 'insert_at',
REMOVE: 'remove', REMOVE: 'remove',
@@ -30,13 +30,13 @@ ol3.CollectionEventType = {
/** /**
* @constructor * @constructor
* @extends {goog.events.Event} * @extends {goog.events.Event}
* @param {ol3.CollectionEventType} type Type. * @param {ol.CollectionEventType} type Type.
* @param {*=} opt_elem Element. * @param {*=} opt_elem Element.
* @param {number=} opt_index Index. * @param {number=} opt_index Index.
* @param {*=} opt_prev Value. * @param {*=} opt_prev Value.
* @param {Object=} opt_target Target. * @param {Object=} opt_target Target.
*/ */
ol3.CollectionEvent = ol.CollectionEvent =
function(type, opt_elem, opt_index, opt_prev, opt_target) { function(type, opt_elem, opt_index, opt_prev, opt_target) {
goog.base(this, type, opt_target); goog.base(this, type, opt_target);
@@ -57,13 +57,13 @@ ol3.CollectionEvent =
this.prev = opt_prev; this.prev = opt_prev;
}; };
goog.inherits(ol3.CollectionEvent, goog.events.Event); goog.inherits(ol.CollectionEvent, goog.events.Event);
/** /**
* @enum {string} * @enum {string}
*/ */
ol3.CollectionProperty = { ol.CollectionProperty = {
LENGTH: 'length' LENGTH: 'length'
}; };
@@ -71,10 +71,10 @@ ol3.CollectionProperty = {
/** /**
* @constructor * @constructor
* @extends {ol3.Object} * @extends {ol.Object}
* @param {Array=} opt_array Array. * @param {Array=} opt_array Array.
*/ */
ol3.Collection = function(opt_array) { ol.Collection = function(opt_array) {
goog.base(this); goog.base(this);
@@ -87,14 +87,14 @@ ol3.Collection = function(opt_array) {
this.updateLength_(); this.updateLength_();
}; };
goog.inherits(ol3.Collection, ol3.Object); goog.inherits(ol.Collection, ol.Object);
/** /**
* Remove all elements from the collection. * Remove all elements from the collection.
*/ */
ol3.Collection.prototype.clear = function() { ol.Collection.prototype.clear = function() {
while (this[ol3.CollectionProperty.LENGTH]) { while (this[ol.CollectionProperty.LENGTH]) {
this.pop(); this.pop();
} }
}; };
@@ -104,7 +104,7 @@ ol3.Collection.prototype.clear = function() {
* @param {Function} f Function. * @param {Function} f Function.
* @param {Object=} opt_obj Object. * @param {Object=} opt_obj Object.
*/ */
ol3.Collection.prototype.forEach = function(f, opt_obj) { ol.Collection.prototype.forEach = function(f, opt_obj) {
goog.array.forEach(this.array_, f, opt_obj); goog.array.forEach(this.array_, f, opt_obj);
}; };
@@ -112,7 +112,7 @@ ol3.Collection.prototype.forEach = function(f, opt_obj) {
/** /**
* @return {Array} Array. * @return {Array} Array.
*/ */
ol3.Collection.prototype.getArray = function() { ol.Collection.prototype.getArray = function() {
return this.array_; return this.array_;
}; };
@@ -121,7 +121,7 @@ ol3.Collection.prototype.getArray = function() {
* @param {number} index Index. * @param {number} index Index.
* @return {*} Element. * @return {*} Element.
*/ */
ol3.Collection.prototype.getAt = function(index) { ol.Collection.prototype.getAt = function(index) {
return this.array_[index]; return this.array_[index];
}; };
@@ -129,8 +129,8 @@ ol3.Collection.prototype.getAt = function(index) {
/** /**
* @return {number} Length. * @return {number} Length.
*/ */
ol3.Collection.prototype.getLength = function() { ol.Collection.prototype.getLength = function() {
return /** @type {number} */ this.get(ol3.CollectionProperty.LENGTH); return /** @type {number} */ this.get(ol.CollectionProperty.LENGTH);
}; };
@@ -138,20 +138,20 @@ ol3.Collection.prototype.getLength = function() {
* @param {number} index Index. * @param {number} index Index.
* @param {*} elem Element. * @param {*} elem Element.
*/ */
ol3.Collection.prototype.insertAt = function(index, elem) { ol.Collection.prototype.insertAt = function(index, elem) {
goog.array.insertAt(this.array_, elem, index); goog.array.insertAt(this.array_, elem, index);
this.updateLength_(); this.updateLength_();
this.dispatchEvent(new ol3.CollectionEvent( this.dispatchEvent(new ol.CollectionEvent(
ol3.CollectionEventType.ADD, elem, undefined, undefined, this)); ol.CollectionEventType.ADD, elem, undefined, undefined, this));
this.dispatchEvent(new ol3.CollectionEvent( this.dispatchEvent(new ol.CollectionEvent(
ol3.CollectionEventType.INSERT_AT, elem, index, undefined, this)); ol.CollectionEventType.INSERT_AT, elem, index, undefined, this));
}; };
/** /**
* @return {*} Element. * @return {*} Element.
*/ */
ol3.Collection.prototype.pop = function() { ol.Collection.prototype.pop = function() {
return this.removeAt(this.getLength() - 1); return this.removeAt(this.getLength() - 1);
}; };
@@ -160,7 +160,7 @@ ol3.Collection.prototype.pop = function() {
* @param {*} elem Element. * @param {*} elem Element.
* @return {number} Length. * @return {number} Length.
*/ */
ol3.Collection.prototype.push = function(elem) { ol.Collection.prototype.push = function(elem) {
var n = this.array_.length; var n = this.array_.length;
this.insertAt(n, elem); this.insertAt(n, elem);
return n; return n;
@@ -171,13 +171,13 @@ ol3.Collection.prototype.push = function(elem) {
* @param {number} index Index. * @param {number} index Index.
* @return {*} Value. * @return {*} Value.
*/ */
ol3.Collection.prototype.removeAt = function(index) { ol.Collection.prototype.removeAt = function(index) {
var prev = this.array_[index]; var prev = this.array_[index];
goog.array.removeAt(this.array_, index); goog.array.removeAt(this.array_, index);
this.updateLength_(); this.updateLength_();
this.dispatchEvent(new ol3.CollectionEvent( this.dispatchEvent(new ol.CollectionEvent(
ol3.CollectionEventType.REMOVE, prev, undefined, undefined, this)); ol.CollectionEventType.REMOVE, prev, undefined, undefined, this));
this.dispatchEvent(new ol3.CollectionEvent(ol3.CollectionEventType.REMOVE_AT, this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.REMOVE_AT,
undefined, index, prev, this)); undefined, index, prev, this));
return prev; return prev;
}; };
@@ -187,16 +187,16 @@ ol3.Collection.prototype.removeAt = function(index) {
* @param {number} index Index. * @param {number} index Index.
* @param {*} elem Element. * @param {*} elem Element.
*/ */
ol3.Collection.prototype.setAt = function(index, elem) { ol.Collection.prototype.setAt = function(index, elem) {
var n = this[ol3.CollectionProperty.LENGTH]; var n = this[ol.CollectionProperty.LENGTH];
if (index < n) { if (index < n) {
var prev = this.array_[index]; var prev = this.array_[index];
this.array_[index] = elem; this.array_[index] = elem;
this.dispatchEvent(new ol3.CollectionEvent(ol3.CollectionEventType.SET_AT, this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.SET_AT,
elem, index, prev, this)); elem, index, prev, this));
this.dispatchEvent(new ol3.CollectionEvent(ol3.CollectionEventType.REMOVE, this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.REMOVE,
prev, undefined, undefined, this)); prev, undefined, undefined, this));
this.dispatchEvent(new ol3.CollectionEvent(ol3.CollectionEventType.ADD, this.dispatchEvent(new ol.CollectionEvent(ol.CollectionEventType.ADD,
elem, undefined, undefined, this)); elem, undefined, undefined, this));
} else { } else {
var j; var j;
@@ -211,6 +211,6 @@ ol3.Collection.prototype.setAt = function(index, elem) {
/** /**
* @private * @private
*/ */
ol3.Collection.prototype.updateLength_ = function() { ol.Collection.prototype.updateLength_ = function() {
this.set(ol3.CollectionProperty.LENGTH, this.array_.length); this.set(ol.CollectionProperty.LENGTH, this.array_.length);
}; };

View File

@@ -1,11 +1,11 @@
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.testing.jsunit'); goog.require('goog.testing.jsunit');
goog.require('ol3.Collection'); goog.require('ol.Collection');
goog.require('ol3.CollectionEventType'); goog.require('ol.CollectionEventType');
function testEmpty() { function testEmpty() {
var collection = new ol3.Collection(); var collection = new ol.Collection();
assertEquals(0, collection.getLength()); assertEquals(0, collection.getLength());
assertTrue(goog.array.equals(collection.getArray(), [])); assertTrue(goog.array.equals(collection.getArray(), []));
assertUndefined(collection.getAt(0)); assertUndefined(collection.getAt(0));
@@ -14,7 +14,7 @@ function testEmpty() {
function testConstruct() { function testConstruct() {
var array = [0, 1, 2]; var array = [0, 1, 2];
var collection = new ol3.Collection(array); var collection = new ol.Collection(array);
assertEquals(0, collection.getAt(0)); assertEquals(0, collection.getAt(0));
assertEquals(1, collection.getAt(1)); assertEquals(1, collection.getAt(1));
assertEquals(2, collection.getAt(2)); assertEquals(2, collection.getAt(2));
@@ -22,7 +22,7 @@ function testConstruct() {
function testPush() { function testPush() {
var collection = new ol3.Collection(); var collection = new ol.Collection();
collection.push(1); collection.push(1);
assertEquals(1, collection.getLength()); assertEquals(1, collection.getLength());
assertTrue(goog.array.equals(collection.getArray(), [1])); assertTrue(goog.array.equals(collection.getArray(), [1]));
@@ -31,7 +31,7 @@ function testPush() {
function testPushPop() { function testPushPop() {
var collection = new ol3.Collection(); var collection = new ol.Collection();
collection.push(1); collection.push(1);
collection.pop(); collection.pop();
assertEquals(0, collection.getLength()); assertEquals(0, collection.getLength());
@@ -41,7 +41,7 @@ function testPushPop() {
function testInsertAt() { function testInsertAt() {
var collection = new ol3.Collection([0, 2]); var collection = new ol.Collection([0, 2]);
collection.insertAt(1, 1); collection.insertAt(1, 1);
assertEquals(0, collection.getAt(0)); assertEquals(0, collection.getAt(0));
assertEquals(1, collection.getAt(1)); assertEquals(1, collection.getAt(1));
@@ -50,7 +50,7 @@ function testInsertAt() {
function testSetAt() { function testSetAt() {
var collection = new ol3.Collection(); var collection = new ol.Collection();
collection.setAt(1, 1); collection.setAt(1, 1);
assertEquals(2, collection.getLength()); assertEquals(2, collection.getLength());
assertUndefined(collection.getAt(0)); assertUndefined(collection.getAt(0));
@@ -59,7 +59,7 @@ function testSetAt() {
function testRemoveAt() { function testRemoveAt() {
var collection = new ol3.Collection([0, 1, 2]); var collection = new ol.Collection([0, 1, 2]);
collection.removeAt(1); collection.removeAt(1);
assertEquals(0, collection.getAt(0)); assertEquals(0, collection.getAt(0));
assertEquals(2, collection.getAt(1)); assertEquals(2, collection.getAt(1));
@@ -67,7 +67,7 @@ function testRemoveAt() {
function testForEachEmpty() { function testForEachEmpty() {
var collection = new ol3.Collection(); var collection = new ol.Collection();
var forEachCalled = false; var forEachCalled = false;
collection.forEach(function() { collection.forEach(function() {
forEachCalled = true; forEachCalled = true;
@@ -77,7 +77,7 @@ function testForEachEmpty() {
function testForEachPopulated() { function testForEachPopulated() {
var collection = new ol3.Collection(); var collection = new ol.Collection();
collection.push(1); collection.push(1);
collection.push(2); collection.push(2);
var forEachCount = 0; var forEachCount = 0;
@@ -89,9 +89,9 @@ function testForEachPopulated() {
function testSetAtEvent() { function testSetAtEvent() {
var collection = new ol3.Collection(['a', 'b']); var collection = new ol.Collection(['a', 'b']);
var index, prev; var index, prev;
goog.events.listen(collection, ol3.CollectionEventType.SET_AT, function(e) { goog.events.listen(collection, ol.CollectionEventType.SET_AT, function(e) {
index = e.index; index = e.index;
prev = e.prev; prev = e.prev;
}); });
@@ -102,10 +102,10 @@ function testSetAtEvent() {
function testRemoveAtEvent() { function testRemoveAtEvent() {
var collection = new ol3.Collection(['a']); var collection = new ol.Collection(['a']);
var index, prev; var index, prev;
goog.events.listen( goog.events.listen(
collection, ol3.CollectionEventType.REMOVE_AT, function(e) { collection, ol.CollectionEventType.REMOVE_AT, function(e) {
index = e.index; index = e.index;
prev = e.prev; prev = e.prev;
}); });
@@ -116,10 +116,10 @@ function testRemoveAtEvent() {
function testInsertAtEvent() { function testInsertAtEvent() {
var collection = new ol3.Collection([0, 2]); var collection = new ol.Collection([0, 2]);
var index; var index;
goog.events.listen( goog.events.listen(
collection, ol3.CollectionEventType.INSERT_AT, function(e) { collection, ol.CollectionEventType.INSERT_AT, function(e) {
index = e.index; index = e.index;
}); });
collection.insertAt(1, 1); collection.insertAt(1, 1);
@@ -128,10 +128,10 @@ function testInsertAtEvent() {
function testSetAtBeyondEnd() { function testSetAtBeyondEnd() {
var collection = new ol3.Collection(); var collection = new ol.Collection();
var inserts = []; var inserts = [];
goog.events.listen( goog.events.listen(
collection, ol3.CollectionEventType.INSERT_AT, function(e) { collection, ol.CollectionEventType.INSERT_AT, function(e) {
inserts.push(e.index); inserts.push(e.index);
}); });
collection.setAt(2, 0); collection.setAt(2, 0);
@@ -147,7 +147,7 @@ function testSetAtBeyondEnd() {
function testLengthChangeInsertAt() { function testLengthChangeInsertAt() {
var collection = new ol3.Collection([0, 1, 2]); var collection = new ol.Collection([0, 1, 2]);
var lengthEventDispatched; var lengthEventDispatched;
goog.events.listen(collection, 'length_changed', function() { goog.events.listen(collection, 'length_changed', function() {
lengthEventDispatched = true; lengthEventDispatched = true;
@@ -158,7 +158,7 @@ function testLengthChangeInsertAt() {
function testLengthChangeRemoveAt() { function testLengthChangeRemoveAt() {
var collection = new ol3.Collection([0, 1, 2]); var collection = new ol.Collection([0, 1, 2]);
var lengthEventDispatched; var lengthEventDispatched;
goog.events.listen(collection, 'length_changed', function() { goog.events.listen(collection, 'length_changed', function() {
lengthEventDispatched = true; lengthEventDispatched = true;
@@ -169,7 +169,7 @@ function testLengthChangeRemoveAt() {
function testLengthChangeSetAt() { function testLengthChangeSetAt() {
var collection = new ol3.Collection([0, 1, 2]); var collection = new ol.Collection([0, 1, 2]);
var lengthEventDispatched; var lengthEventDispatched;
goog.events.listen(collection, 'length_changed', function() { goog.events.listen(collection, 'length_changed', function() {
lengthEventDispatched = true; lengthEventDispatched = true;
@@ -180,7 +180,7 @@ function testLengthChangeSetAt() {
function testForEach() { function testForEach() {
var collection = new ol3.Collection([1, 2, 4]); var collection = new ol.Collection([1, 2, 4]);
var sum = 0; var sum = 0;
collection.forEach(function(elem) { collection.forEach(function(elem) {
sum += elem; sum += elem;
@@ -190,7 +190,7 @@ function testForEach() {
function testForEachScope() { function testForEachScope() {
var collection = new ol3.Collection([0]); var collection = new ol.Collection([0]);
var that; var that;
var uniqueObj = {}; var uniqueObj = {};
collection.forEach(function(elem) { collection.forEach(function(elem) {
@@ -201,9 +201,9 @@ function testForEachScope() {
function testAddEvent() { function testAddEvent() {
var collection = new ol3.Collection(); var collection = new ol.Collection();
var elem; var elem;
goog.events.listen(collection, ol3.CollectionEventType.ADD, function(e) { goog.events.listen(collection, ol.CollectionEventType.ADD, function(e) {
elem = e.elem; elem = e.elem;
}); });
collection.push(1); collection.push(1);
@@ -212,13 +212,13 @@ function testAddEvent() {
function testAddRemoveEvent() { function testAddRemoveEvent() {
var collection = new ol3.Collection([1]); var collection = new ol.Collection([1]);
var addedElem; var addedElem;
goog.events.listen(collection, ol3.CollectionEventType.ADD, function(e) { goog.events.listen(collection, ol.CollectionEventType.ADD, function(e) {
addedElem = e.elem; addedElem = e.elem;
}); });
var removedElem; var removedElem;
goog.events.listen(collection, ol3.CollectionEventType.REMOVE, function(e) { goog.events.listen(collection, ol.CollectionEventType.REMOVE, function(e) {
removedElem = e.elem; removedElem = e.elem;
}); });
collection.setAt(0, 2); collection.setAt(0, 2);
@@ -228,9 +228,9 @@ function testAddRemoveEvent() {
function testRemove() { function testRemove() {
var collection = new ol3.Collection([1]); var collection = new ol.Collection([1]);
var elem; var elem;
goog.events.listen(collection, ol3.CollectionEventType.REMOVE, function(e) { goog.events.listen(collection, ol.CollectionEventType.REMOVE, function(e) {
elem = e.elem; elem = e.elem;
}); });
collection.pop(); collection.pop();

View File

@@ -1,4 +1,4 @@
goog.provide('ol3.Color'); goog.provide('ol.Color');
goog.require('goog.color'); goog.require('goog.color');
@@ -11,7 +11,7 @@ goog.require('goog.color');
* @param {number} b Blue. * @param {number} b Blue.
* @param {number} a Alpha. * @param {number} a Alpha.
*/ */
ol3.Color = function(r, g, b, a) { ol.Color = function(r, g, b, a) {
/** /**
* @type {number} * @type {number}
@@ -39,18 +39,18 @@ ol3.Color = function(r, g, b, a) {
/** /**
* @param {string} str String. * @param {string} str String.
* @param {number=} opt_a Alpha. * @param {number=} opt_a Alpha.
* @return {ol3.Color} Color. * @return {ol.Color} Color.
*/ */
ol3.Color.createFromString = function(str, opt_a) { ol.Color.createFromString = function(str, opt_a) {
var rgb = goog.color.hexToRgb(goog.color.parse(str).hex); var rgb = goog.color.hexToRgb(goog.color.parse(str).hex);
var a = opt_a || 255; var a = opt_a || 255;
return new ol3.Color(rgb[0], rgb[1], rgb[2], a); return new ol.Color(rgb[0], rgb[1], rgb[2], a);
}; };
/** /**
* @return {ol3.Color} Clone. * @return {ol.Color} Clone.
*/ */
ol3.Color.prototype.clone = function() { ol.Color.prototype.clone = function() {
return new ol3.Color(this.r, this.g, this.b, this.a); return new ol.Color(this.r, this.g, this.b, this.a);
}; };

View File

@@ -3,7 +3,7 @@
// FIXME handle layer order // FIXME handle layer order
// FIXME check clean-up code // FIXME check clean-up code
goog.provide('ol3.control.Attribution'); goog.provide('ol.control.Attribution');
goog.require('goog.dom'); goog.require('goog.dom');
goog.require('goog.dom.TagName'); goog.require('goog.dom.TagName');
@@ -11,21 +11,21 @@ goog.require('goog.events');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('goog.object'); goog.require('goog.object');
goog.require('goog.style'); goog.require('goog.style');
goog.require('ol3.Collection'); goog.require('ol.Collection');
goog.require('ol3.Control'); goog.require('ol.Control');
goog.require('ol3.CoverageArea'); goog.require('ol.CoverageArea');
goog.require('ol3.Layer'); goog.require('ol.Layer');
goog.require('ol3.MapProperty'); goog.require('ol.MapProperty');
goog.require('ol3.TileCoverageArea'); goog.require('ol.TileCoverageArea');
/** /**
* @constructor * @constructor
* @extends {ol3.Control} * @extends {ol.Control}
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
*/ */
ol3.control.Attribution = function(map) { ol.control.Attribution = function(map) {
goog.base(this, map); goog.base(this, map);
@@ -55,41 +55,41 @@ ol3.control.Attribution = function(map) {
/** /**
* @private * @private
* @type {Object.<number, Array.<ol3.CoverageArea>>} * @type {Object.<number, Array.<ol.CoverageArea>>}
*/ */
this.coverageAreass_ = {}; this.coverageAreass_ = {};
goog.events.listen( goog.events.listen(
map, ol3.Object.getChangedEventType(ol3.MapProperty.CENTER), map, ol.Object.getChangedEventType(ol.MapProperty.CENTER),
this.handleMapChanged, false, this); this.handleMapChanged, false, this);
goog.events.listen( goog.events.listen(
map, ol3.Object.getChangedEventType(ol3.MapProperty.LAYERS), map, ol.Object.getChangedEventType(ol.MapProperty.LAYERS),
this.handleMapLayersChanged, false, this); this.handleMapLayersChanged, false, this);
goog.events.listen(map, goog.events.listen(map,
ol3.Object.getChangedEventType(ol3.MapProperty.RESOLUTION), ol.Object.getChangedEventType(ol.MapProperty.RESOLUTION),
this.handleMapChanged, false, this); this.handleMapChanged, false, this);
goog.events.listen(map, ol3.Object.getChangedEventType(ol3.MapProperty.SIZE), goog.events.listen(map, ol.Object.getChangedEventType(ol.MapProperty.SIZE),
this.handleMapChanged, false, this); this.handleMapChanged, false, this);
this.handleMapLayersChanged(); this.handleMapLayersChanged();
}; };
goog.inherits(ol3.control.Attribution, ol3.Control); goog.inherits(ol.control.Attribution, ol.Control);
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @protected * @protected
*/ */
ol3.control.Attribution.prototype.addLayer = function(layer) { ol.control.Attribution.prototype.addLayer = function(layer) {
var layerKey = goog.getUid(layer); var layerKey = goog.getUid(layer);
this.layerVisibleChangeListenerKeys_[layerKey] = goog.events.listen( this.layerVisibleChangeListenerKeys_[layerKey] = goog.events.listen(
layer, ol3.Object.getChangedEventType(ol3.LayerProperty.VISIBLE), layer, ol.Object.getChangedEventType(ol.LayerProperty.VISIBLE),
this.handleLayerVisibleChanged, false, this); this.handleLayerVisibleChanged, false, this);
if (layer.getStore().isReady()) { if (layer.getStore().isReady()) {
@@ -103,10 +103,10 @@ ol3.control.Attribution.prototype.addLayer = function(layer) {
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @private * @private
*/ */
ol3.control.Attribution.prototype.createAttributionElementsForLayer_ = ol.control.Attribution.prototype.createAttributionElementsForLayer_ =
function(layer) { function(layer) {
var store = layer.getStore(); var store = layer.getStore();
@@ -117,8 +117,8 @@ ol3.control.Attribution.prototype.createAttributionElementsForLayer_ =
var map = this.getMap(); var map = this.getMap();
var mapIsDef = map.isDef(); var mapIsDef = map.isDef();
var mapExtent = /** @type {ol3.Extent} */ map.getExtent(); var mapExtent = /** @type {ol.Extent} */ map.getExtent();
var mapProjection = /** @type {ol3.Projection} */ map.getProjection(); var mapProjection = /** @type {ol.Projection} */ map.getProjection();
var mapResolution = /** @type {number} */ map.getResolution(); var mapResolution = /** @type {number} */ map.getResolution();
var layerVisible = layer.getVisible(); var layerVisible = layer.getVisible();
@@ -157,20 +157,20 @@ ol3.control.Attribution.prototype.createAttributionElementsForLayer_ =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.control.Attribution.prototype.getElement = function() { ol.control.Attribution.prototype.getElement = function() {
return this.ulElement_; return this.ulElement_;
}; };
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @param {ol3.Extent} mapExtent Map extent. * @param {ol.Extent} mapExtent Map extent.
* @param {number} mapResolution Map resolution. * @param {number} mapResolution Map resolution.
* @param {ol3.Projection} mapProjection Map projection. * @param {ol.Projection} mapProjection Map projection.
* @return {Object.<number, boolean>} Attribution visibilities. * @return {Object.<number, boolean>} Attribution visibilities.
* @private * @private
*/ */
ol3.control.Attribution.prototype.getLayerAttributionVisiblities_ = ol.control.Attribution.prototype.getLayerAttributionVisiblities_ =
function(layer, mapExtent, mapResolution, mapProjection) { function(layer, mapExtent, mapResolution, mapProjection) {
var store = layer.getStore(); var store = layer.getStore();
@@ -181,8 +181,8 @@ ol3.control.Attribution.prototype.getLayerAttributionVisiblities_ =
} }
var mapZ; var mapZ;
if (store instanceof ol3.TileStore) { if (store instanceof ol.TileStore) {
var tileStore = /** @type {ol3.TileStore} */ store; var tileStore = /** @type {ol.TileStore} */ store;
var tileGrid = tileStore.getTileGrid(); var tileGrid = tileStore.getTileGrid();
mapZ = tileGrid.getZForResolution(mapResolution); mapZ = tileGrid.getZForResolution(mapResolution);
} }
@@ -201,10 +201,10 @@ ol3.control.Attribution.prototype.getLayerAttributionVisiblities_ =
var attributionProjection = attribution.getProjection(); var attributionProjection = attribution.getProjection();
coverageAreas = attribution.getCoverageAreas(); coverageAreas = attribution.getCoverageAreas();
if (!goog.isNull(coverageAreas) && if (!goog.isNull(coverageAreas) &&
!ol3.Projection.equivalent(attributionProjection, mapProjection)) { !ol.Projection.equivalent(attributionProjection, mapProjection)) {
var transformFn = ol3.Projection.getTransform( var transformFn = ol.Projection.getTransform(
attributionProjection, mapProjection); attributionProjection, mapProjection);
if (transformFn !== ol3.Projection.cloneTransform) { if (transformFn !== ol.Projection.cloneTransform) {
coverageAreas = goog.array.map(coverageAreas, function(coverageArea) { coverageAreas = goog.array.map(coverageAreas, function(coverageArea) {
return coverageArea.transform(transformFn); return coverageArea.transform(transformFn);
}); });
@@ -214,16 +214,16 @@ ol3.control.Attribution.prototype.getLayerAttributionVisiblities_ =
} }
if (!goog.isNull(coverageAreas)) { if (!goog.isNull(coverageAreas)) {
if (store instanceof ol3.TileStore) { if (store instanceof ol.TileStore) {
attributionVisible = goog.array.some( attributionVisible = goog.array.some(
coverageAreas, coverageAreas,
/** /**
* @param {ol3.TileCoverageArea} tileCoverageArea * @param {ol.TileCoverageArea} tileCoverageArea
* Tile coverage area. * Tile coverage area.
*/ */
function(tileCoverageArea) { function(tileCoverageArea) {
goog.asserts.assert( goog.asserts.assert(
tileCoverageArea instanceof ol3.TileCoverageArea); tileCoverageArea instanceof ol.TileCoverageArea);
return tileCoverageArea.intersectsExtentAndZ(mapExtent, mapZ); return tileCoverageArea.intersectsExtentAndZ(mapExtent, mapZ);
}); });
} else { } else {
@@ -248,8 +248,8 @@ ol3.control.Attribution.prototype.getLayerAttributionVisiblities_ =
/** /**
* @param {goog.events.Event} event Event. * @param {goog.events.Event} event Event.
*/ */
ol3.control.Attribution.prototype.handleLayerLoad = function(event) { ol.control.Attribution.prototype.handleLayerLoad = function(event) {
var layer = /** @type {ol3.Layer} */ event.target; var layer = /** @type {ol.Layer} */ event.target;
this.createAttributionElementsForLayer_(layer); this.createAttributionElementsForLayer_(layer);
}; };
@@ -258,15 +258,15 @@ ol3.control.Attribution.prototype.handleLayerLoad = function(event) {
* @param {goog.events.Event} event Event. * @param {goog.events.Event} event Event.
* @protected * @protected
*/ */
ol3.control.Attribution.prototype.handleLayerVisibleChanged = function(event) { ol.control.Attribution.prototype.handleLayerVisibleChanged = function(event) {
var map = this.getMap(); var map = this.getMap();
var mapIsDef = map.isDef(); var mapIsDef = map.isDef();
var mapExtent = /** @type {ol3.Extent} */ map.getExtent(); var mapExtent = /** @type {ol.Extent} */ map.getExtent();
var mapProjection = /** @type {ol3.Projection} */ map.getProjection(); var mapProjection = /** @type {ol.Projection} */ map.getProjection();
var mapResolution = /** @type {number} */ map.getResolution(); var mapResolution = /** @type {number} */ map.getResolution();
var layer = /** @type {ol3.Layer} */ event.target; var layer = /** @type {ol.Layer} */ event.target;
this.updateLayerAttributionsVisibility_( this.updateLayerAttributionsVisibility_(
layer, mapIsDef, mapExtent, mapResolution, mapProjection); layer, mapIsDef, mapExtent, mapResolution, mapProjection);
@@ -275,22 +275,22 @@ ol3.control.Attribution.prototype.handleLayerVisibleChanged = function(event) {
/** /**
* @param {ol3.CollectionEvent} collectionEvent Collection event. * @param {ol.CollectionEvent} collectionEvent Collection event.
* @protected * @protected
*/ */
ol3.control.Attribution.prototype.handleLayersAdd = function(collectionEvent) { ol.control.Attribution.prototype.handleLayersAdd = function(collectionEvent) {
var layer = /** @type {ol3.Layer} */ collectionEvent.elem; var layer = /** @type {ol.Layer} */ collectionEvent.elem;
this.addLayer(layer); this.addLayer(layer);
}; };
/** /**
* @param {ol3.CollectionEvent} collectionEvent Collection event. * @param {ol.CollectionEvent} collectionEvent Collection event.
* @protected * @protected
*/ */
ol3.control.Attribution.prototype.handleLayersRemove = ol.control.Attribution.prototype.handleLayersRemove =
function(collectionEvent) { function(collectionEvent) {
var layer = /** @type {ol3.Layer} */ collectionEvent.elem; var layer = /** @type {ol.Layer} */ collectionEvent.elem;
this.removeLayer(layer); this.removeLayer(layer);
}; };
@@ -298,12 +298,12 @@ ol3.control.Attribution.prototype.handleLayersRemove =
/** /**
* @protected * @protected
*/ */
ol3.control.Attribution.prototype.handleMapChanged = function() { ol.control.Attribution.prototype.handleMapChanged = function() {
var map = this.getMap(); var map = this.getMap();
var mapIsDef = map.isDef(); var mapIsDef = map.isDef();
var mapExtent = /** @type {ol3.Extent} */ map.getExtent(); var mapExtent = /** @type {ol.Extent} */ map.getExtent();
var mapProjection = /** @type {ol3.Projection} */ map.getProjection(); var mapProjection = /** @type {ol.Projection} */ map.getProjection();
var mapResolution = map.getResolution(); var mapResolution = map.getResolution();
var layers = map.getLayers(); var layers = map.getLayers();
@@ -318,7 +318,7 @@ ol3.control.Attribution.prototype.handleMapChanged = function() {
/** /**
* @protected * @protected
*/ */
ol3.control.Attribution.prototype.handleMapLayersChanged = function() { ol.control.Attribution.prototype.handleMapLayersChanged = function() {
if (!goog.isNull(this.layersListenerKeys_)) { if (!goog.isNull(this.layersListenerKeys_)) {
goog.array.forEach(this.layersListenerKeys_, goog.events.unlistenByKey); goog.array.forEach(this.layersListenerKeys_, goog.events.unlistenByKey);
this.layersListenerKeys_ = null; this.layersListenerKeys_ = null;
@@ -333,9 +333,9 @@ ol3.control.Attribution.prototype.handleMapLayersChanged = function() {
if (goog.isDefAndNotNull(layers)) { if (goog.isDefAndNotNull(layers)) {
layers.forEach(this.addLayer, this); layers.forEach(this.addLayer, this);
this.layersListenerKeys_ = [ this.layersListenerKeys_ = [
goog.events.listen(layers, ol3.CollectionEventType.ADD, goog.events.listen(layers, ol.CollectionEventType.ADD,
this.handleLayersAdd, false, this), this.handleLayersAdd, false, this),
goog.events.listen(layers, ol3.CollectionEventType.REMOVE, goog.events.listen(layers, ol.CollectionEventType.REMOVE,
this.handleLayersRemove, false, this) this.handleLayersRemove, false, this)
]; ];
} }
@@ -343,10 +343,10 @@ ol3.control.Attribution.prototype.handleMapLayersChanged = function() {
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @protected * @protected
*/ */
ol3.control.Attribution.prototype.removeLayer = function(layer) { ol.control.Attribution.prototype.removeLayer = function(layer) {
var layerKey = goog.getUid(layer); var layerKey = goog.getUid(layer);
@@ -365,14 +365,14 @@ ol3.control.Attribution.prototype.removeLayer = function(layer) {
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @param {boolean} mapIsDef Map is defined. * @param {boolean} mapIsDef Map is defined.
* @param {ol3.Extent} mapExtent Map extent. * @param {ol.Extent} mapExtent Map extent.
* @param {number} mapResolution Map resolution. * @param {number} mapResolution Map resolution.
* @param {ol3.Projection} mapProjection Map projection. * @param {ol.Projection} mapProjection Map projection.
* @private * @private
*/ */
ol3.control.Attribution.prototype.updateLayerAttributionsVisibility_ = ol.control.Attribution.prototype.updateLayerAttributionsVisibility_ =
function(layer, mapIsDef, mapExtent, mapResolution, mapProjection) { function(layer, mapIsDef, mapExtent, mapResolution, mapProjection) {
if (mapIsDef && layer.getVisible()) { if (mapIsDef && layer.getVisible()) {
var attributionVisibilities = this.getLayerAttributionVisiblities_( var attributionVisibilities = this.getLayerAttributionVisiblities_(

33
src/ol/control/control.js Normal file
View File

@@ -0,0 +1,33 @@
goog.provide('ol.Control');
goog.require('ol.Map');
/**
* @constructor
* @param {ol.Map} map Map.
*/
ol.Control = function(map) {
/**
* @private
* @type {ol.Map}
*/
this.map_ = map;
};
/**
* @return {Element} Element.
*/
ol.Control.prototype.getElement = goog.abstractMethod;
/**
* @return {ol.Map} Map.
*/
ol.Control.prototype.getMap = function() {
return this.map_;
};

View File

@@ -1,26 +1,26 @@
// FIXME should listen on appropriate pane, once it is defined // FIXME should listen on appropriate pane, once it is defined
goog.provide('ol3.control.MousePosition'); goog.provide('ol.control.MousePosition');
goog.require('goog.events'); goog.require('goog.events');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('ol3.Control'); goog.require('ol.Control');
goog.require('ol3.MapProperty'); goog.require('ol.MapProperty');
goog.require('ol3.Object'); goog.require('ol.Object');
goog.require('ol3.Projection'); goog.require('ol.Projection');
goog.require('ol3.TransformFunction'); goog.require('ol.TransformFunction');
/** /**
* @constructor * @constructor
* @extends {ol3.Control} * @extends {ol.Control}
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
* @param {ol3.Projection=} opt_projection Projection. * @param {ol.Projection=} opt_projection Projection.
* @param {ol3.CoordinateFormatType=} opt_coordinateFormat Coordinate format. * @param {ol.CoordinateFormatType=} opt_coordinateFormat Coordinate format.
* @param {string=} opt_undefinedHTML Undefined HTML. * @param {string=} opt_undefinedHTML Undefined HTML.
*/ */
ol3.control.MousePosition = ol.control.MousePosition =
function(map, opt_projection, opt_coordinateFormat, opt_undefinedHTML) { function(map, opt_projection, opt_coordinateFormat, opt_undefinedHTML) {
goog.base(this, map); goog.base(this, map);
@@ -33,13 +33,13 @@ ol3.control.MousePosition =
/** /**
* @private * @private
* @type {ol3.Projection} * @type {ol.Projection}
*/ */
this.projection_ = opt_projection || null; this.projection_ = opt_projection || null;
/** /**
* @private * @private
* @type {ol3.CoordinateFormatType|undefined} * @type {ol.CoordinateFormatType|undefined}
*/ */
this.coordinateFormat_ = opt_coordinateFormat; this.coordinateFormat_ = opt_coordinateFormat;
@@ -51,12 +51,12 @@ ol3.control.MousePosition =
/** /**
* @private * @private
* @type {ol3.TransformFunction} * @type {ol.TransformFunction}
*/ */
this.transform_ = ol3.Projection.identityTransform; this.transform_ = ol.Projection.identityTransform;
goog.events.listen(map, goog.events.listen(map,
ol3.Object.getChangedEventType(ol3.MapProperty.PROJECTION), ol.Object.getChangedEventType(ol.MapProperty.PROJECTION),
this.handleMapProjectionChanged, false, this); this.handleMapProjectionChanged, false, this);
goog.events.listen(map.getViewport(), goog.events.EventType.MOUSEMOVE, goog.events.listen(map.getViewport(), goog.events.EventType.MOUSEMOVE,
@@ -68,13 +68,13 @@ ol3.control.MousePosition =
this.handleMapProjectionChanged(); this.handleMapProjectionChanged();
}; };
goog.inherits(ol3.control.MousePosition, ol3.Control); goog.inherits(ol.control.MousePosition, ol.Control);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.control.MousePosition.prototype.getElement = function() { ol.control.MousePosition.prototype.getElement = function() {
return this.divElement_; return this.divElement_;
}; };
@@ -82,14 +82,14 @@ ol3.control.MousePosition.prototype.getElement = function() {
/** /**
* @protected * @protected
*/ */
ol3.control.MousePosition.prototype.handleMapProjectionChanged = function() { ol.control.MousePosition.prototype.handleMapProjectionChanged = function() {
var map = this.getMap(); var map = this.getMap();
var mapProjection = map.getProjection(); var mapProjection = map.getProjection();
if (!goog.isDef(mapProjection) || goog.isNull(this.projection_)) { if (!goog.isDef(mapProjection) || goog.isNull(this.projection_)) {
this.transform_ = ol3.Projection.identityTransform; this.transform_ = ol.Projection.identityTransform;
} else { } else {
this.transform_ = this.transform_ =
ol3.Projection.getTransform(mapProjection, this.projection_); ol.Projection.getTransform(mapProjection, this.projection_);
} }
// FIXME should we instead re-calculate using the last known mouse position? // FIXME should we instead re-calculate using the last known mouse position?
this.divElement_.innerHTML = this.undefinedHTML_; this.divElement_.innerHTML = this.undefinedHTML_;
@@ -100,9 +100,9 @@ ol3.control.MousePosition.prototype.handleMapProjectionChanged = function() {
* @param {goog.events.BrowserEvent} browserEvent Browser event. * @param {goog.events.BrowserEvent} browserEvent Browser event.
* @protected * @protected
*/ */
ol3.control.MousePosition.prototype.handleMouseMove = function(browserEvent) { ol.control.MousePosition.prototype.handleMouseMove = function(browserEvent) {
var map = this.getMap(); var map = this.getMap();
var pixel = new ol3.Pixel(browserEvent.offsetX, browserEvent.offsetY); var pixel = new ol.Pixel(browserEvent.offsetX, browserEvent.offsetY);
var coordinate = map.getCoordinateFromPixel(pixel); var coordinate = map.getCoordinateFromPixel(pixel);
var html; var html;
if (goog.isDef(coordinate)) { if (goog.isDef(coordinate)) {
@@ -123,6 +123,6 @@ ol3.control.MousePosition.prototype.handleMouseMove = function(browserEvent) {
* @param {goog.events.BrowserEvent} browserEvent Browser event. * @param {goog.events.BrowserEvent} browserEvent Browser event.
* @protected * @protected
*/ */
ol3.control.MousePosition.prototype.handleMouseOut = function(browserEvent) { ol.control.MousePosition.prototype.handleMouseOut = function(browserEvent) {
this.divElement_.innerHTML = this.undefinedHTML_; this.divElement_.innerHTML = this.undefinedHTML_;
}; };

31
src/ol/coordinate.js Normal file
View File

@@ -0,0 +1,31 @@
goog.provide('ol.Coordinate');
goog.require('goog.math.Vec2');
/**
* @constructor
* @extends {goog.math.Vec2}
* @param {number} x X.
* @param {number} y Y.
*/
ol.Coordinate = function(x, y) {
goog.base(this, x, y);
};
goog.inherits(ol.Coordinate, goog.math.Vec2);
/**
* @const
* @type {ol.Coordinate}
*/
ol.Coordinate.ZERO = new ol.Coordinate(0, 0);
/**
* @return {ol.Coordinate} Clone.
*/
ol.Coordinate.prototype.clone = function() {
return new ol.Coordinate(this.x, this.y);
};

View File

@@ -1,21 +1,21 @@
goog.provide('ol3.CoordinateFormat'); goog.provide('ol.CoordinateFormat');
goog.provide('ol3.CoordinateFormatType'); goog.provide('ol.CoordinateFormatType');
goog.require('goog.math'); goog.require('goog.math');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
/** /**
* @typedef {function((ol3.Coordinate|undefined)): string} * @typedef {function((ol.Coordinate|undefined)): string}
*/ */
ol3.CoordinateFormatType; ol.CoordinateFormatType;
/** /**
* @param {number} precision Precision. * @param {number} precision Precision.
* @return {ol3.CoordinateFormatType} Coordinate format. * @return {ol.CoordinateFormatType} Coordinate format.
*/ */
ol3.CoordinateFormat.createXY = function(precision) { ol.CoordinateFormat.createXY = function(precision) {
return function(coordinate) { return function(coordinate) {
if (goog.isDef(coordinate)) { if (goog.isDef(coordinate)) {
return coordinate.x.toFixed(precision) + ', ' + return coordinate.x.toFixed(precision) + ', ' +
@@ -33,7 +33,7 @@ ol3.CoordinateFormat.createXY = function(precision) {
* @param {string} hemispheres Hemispheres. * @param {string} hemispheres Hemispheres.
* @return {string} String. * @return {string} String.
*/ */
ol3.CoordinateFormat.degreesToHDMS_ = function(degrees, hemispheres) { ol.CoordinateFormat.degreesToHDMS_ = function(degrees, hemispheres) {
var normalizedDegrees = goog.math.modulo(degrees + 180, 360) - 180; var normalizedDegrees = goog.math.modulo(degrees + 180, 360) - 180;
var x = Math.abs(Math.round(3600 * normalizedDegrees)); var x = Math.abs(Math.round(3600 * normalizedDegrees));
return Math.floor(x / 3600) + '\u00b0 ' + return Math.floor(x / 3600) + '\u00b0 ' +
@@ -44,13 +44,13 @@ ol3.CoordinateFormat.degreesToHDMS_ = function(degrees, hemispheres) {
/** /**
* @param {ol3.Coordinate|undefined} coordinate Coordinate. * @param {ol.Coordinate|undefined} coordinate Coordinate.
* @return {string} Coordinate format. * @return {string} Coordinate format.
*/ */
ol3.CoordinateFormat.hdms = function(coordinate) { ol.CoordinateFormat.hdms = function(coordinate) {
if (goog.isDef(coordinate)) { if (goog.isDef(coordinate)) {
return ol3.CoordinateFormat.degreesToHDMS_(coordinate.y, 'NS') + ' ' + return ol.CoordinateFormat.degreesToHDMS_(coordinate.y, 'NS') + ' ' +
ol3.CoordinateFormat.degreesToHDMS_(coordinate.x, 'EW'); ol.CoordinateFormat.degreesToHDMS_(coordinate.x, 'EW');
} else { } else {
return ''; return '';
} }

45
src/ol/coveragearea.js Normal file
View File

@@ -0,0 +1,45 @@
goog.provide('ol.CoverageArea');
goog.require('ol.Extent');
/**
* @constructor
* @param {ol.Extent} extent Extent.
*/
ol.CoverageArea = function(extent) {
/**
* @type {ol.Extent}
*/
this.extent = extent;
};
/**
* @param {ol.Extent} extent Extent.
* @return {boolean} Intersects.
*/
ol.CoverageArea.prototype.intersectsExtent = function(extent) {
return this.extent.intersects(extent);
};
/**
* @param {ol.Extent} extent Extent.
* @param {number} resolution Resolution.
* @return {boolean} Intersects.
*/
ol.CoverageArea.prototype.intersectsExtentAndResolution = goog.abstractMethod;
/**
* @param {ol.TransformFunction} transformFn Transform.
* @return {ol.CoverageArea} Transformed coverage area.
*/
ol.CoverageArea.prototype.transform = function(transformFn) {
var extent = this.extent.transform(transformFn);
return new ol.CoverageArea(extent);
};

153
src/ol/createmap.js Normal file
View File

@@ -0,0 +1,153 @@
goog.provide('ol.RendererHint');
goog.provide('ol.createMap');
goog.require('goog.object');
goog.require('ol.Collection');
goog.require('ol.Map');
goog.require('ol.MapProperty');
goog.require('ol.Projection');
goog.require('ol.interaction.AltDragRotate');
goog.require('ol.interaction.CenterConstraint');
goog.require('ol.interaction.Constraints');
goog.require('ol.interaction.DblClickZoom');
goog.require('ol.interaction.DragPan');
goog.require('ol.interaction.KeyboardPan');
goog.require('ol.interaction.KeyboardZoom');
goog.require('ol.interaction.MouseWheelZoom');
goog.require('ol.interaction.ResolutionConstraint');
goog.require('ol.interaction.RotationConstraint');
goog.require('ol.interaction.ShiftDragZoom');
goog.require('ol.renderer.dom');
goog.require('ol.renderer.dom.Map');
goog.require('ol.renderer.webgl');
goog.require('ol.renderer.webgl.Map');
/**
* @define {string} Default projection code.
*/
ol.DEFAULT_PROJECTION_CODE = 'EPSG:3857';
/**
* @define {string} Default user projection code.
*/
ol.DEFAULT_USER_PROJECTION_CODE = 'EPSG:4326';
/**
* @define {boolean} Whether to enable DOM.
*/
ol.ENABLE_DOM = true;
/**
* @define {boolean} Whether to enable WebGL.
*/
ol.ENABLE_WEBGL = true;
/**
* @enum {string}
*/
ol.RendererHint = {
DOM: 'dom',
WEBGL: 'webgl'
};
/**
* @type {Array.<ol.RendererHint>}
*/
ol.DEFAULT_RENDERER_HINT = [
ol.RendererHint.WEBGL,
ol.RendererHint.DOM
];
/**
* @param {Element} target Target.
* @param {Object.<string, *>=} opt_values Values.
* @param {ol.RendererHint|Array.<ol.RendererHint>=} opt_rendererHints
* Renderer hints.
* @return {ol.Map} Map.
*/
ol.createMap = function(target, opt_values, opt_rendererHints) {
var values = {};
if (goog.isDef(opt_values)) {
goog.object.extend(values, opt_values);
}
// FIXME this should be a configuration option
var centerConstraint = ol.interaction.CenterConstraint.snapToPixel;
var resolutionConstraint =
ol.interaction.ResolutionConstraint.createSnapToPower(
Math.exp(Math.log(2) / 8), ol.Projection.EPSG_3857_HALF_SIZE / 128);
var rotationConstraint = ol.interaction.RotationConstraint.none;
var constraints = new ol.interaction.Constraints(
centerConstraint, resolutionConstraint, rotationConstraint);
if (!goog.object.containsKey(values, ol.MapProperty.INTERACTIONS)) {
var interactions = new ol.Collection();
interactions.push(new ol.interaction.AltDragRotate(constraints));
interactions.push(new ol.interaction.DblClickZoom(constraints));
interactions.push(new ol.interaction.DragPan(constraints));
interactions.push(new ol.interaction.KeyboardPan(constraints, 16));
interactions.push(new ol.interaction.KeyboardZoom(constraints));
interactions.push(new ol.interaction.MouseWheelZoom(constraints));
interactions.push(new ol.interaction.ShiftDragZoom(constraints));
values[ol.MapProperty.INTERACTIONS] = interactions;
}
if (!goog.object.containsKey(values, ol.MapProperty.LAYERS)) {
values[ol.MapProperty.LAYERS] = new ol.Collection();
}
if (!goog.object.containsKey(values, ol.MapProperty.PROJECTION)) {
values[ol.MapProperty.PROJECTION] =
ol.Projection.getFromCode(ol.DEFAULT_PROJECTION_CODE);
}
if (!goog.object.containsKey(values, ol.MapProperty.USER_PROJECTION)) {
values[ol.MapProperty.USER_PROJECTION] =
ol.Projection.getFromCode(ol.DEFAULT_USER_PROJECTION_CODE);
}
/**
* @type {Array.<ol.RendererHint>}
*/
var rendererHints;
if (goog.isDef(opt_rendererHints)) {
if (goog.isArray(opt_rendererHints)) {
rendererHints = opt_rendererHints;
} else {
rendererHints = [opt_rendererHints];
}
} else {
rendererHints = ol.DEFAULT_RENDERER_HINT;
}
var i, rendererHint, rendererConstructor;
for (i = 0; i < rendererHints.length; ++i) {
rendererHint = rendererHints[i];
if (rendererHint == ol.RendererHint.DOM) {
if (ol.ENABLE_DOM && ol.renderer.dom.isSupported()) {
rendererConstructor = ol.renderer.dom.Map;
break;
}
} else if (rendererHint == ol.RendererHint.WEBGL) {
if (ol.ENABLE_WEBGL && ol.renderer.webgl.isSupported()) {
rendererConstructor = ol.renderer.webgl.Map;
break;
}
}
}
if (goog.isDef(rendererConstructor)) {
return new ol.Map(target, rendererConstructor, values);
} else {
return null;
}
};

59
src/ol/extent.js Normal file
View File

@@ -0,0 +1,59 @@
goog.provide('ol.Extent');
goog.require('ol.Coordinate');
goog.require('ol.Rectangle');
goog.require('ol.TransformFunction');
/**
* @constructor
* @extends {ol.Rectangle}
* @param {number} minX Minimum X.
* @param {number} minY Minimum Y.
* @param {number} maxX Maximum X.
* @param {number} maxY Maximum Y.
*/
ol.Extent = function(minX, minY, maxX, maxY) {
goog.base(this, minX, minY, maxX, maxY);
};
goog.inherits(ol.Extent, ol.Rectangle);
/**
* @param {...ol.Coordinate} var_args Coordinates.
* @return {!ol.Extent} Bounding extent.
*/
ol.Extent.boundingExtent = function(var_args) {
var coordinate0 = arguments[0];
var extent = new ol.Extent(coordinate0.x, coordinate0.y,
coordinate0.x, coordinate0.y);
var i;
for (i = 1; i < arguments.length; ++i) {
var coordinate = arguments[i];
extent.minX = Math.min(extent.minX, coordinate.x);
extent.minY = Math.min(extent.minY, coordinate.y);
extent.maxX = Math.max(extent.maxX, coordinate.x);
extent.maxY = Math.max(extent.maxY, coordinate.y);
}
return extent;
};
/**
* @return {ol.Extent} Extent.
*/
ol.Extent.prototype.clone = function() {
return new ol.Extent(this.minX, this.minY, this.maxX, this.maxY);
};
/**
* @param {ol.TransformFunction} transformFn Transform function.
* @return {ol.Extent} Extent.
*/
ol.Extent.prototype.transform = function(transformFn) {
var min = transformFn(new ol.Coordinate(this.minX, this.minY));
var max = transformFn(new ol.Coordinate(this.maxX, this.maxY));
return new ol.Extent(min.x, min.y, max.x, max.y);
};

View File

@@ -1,12 +1,12 @@
goog.require('goog.testing.jsunit'); goog.require('goog.testing.jsunit');
goog.require('ol3.Extent'); goog.require('ol.Extent');
goog.require('ol3.Projection'); goog.require('ol.Projection');
function testClone() { function testClone() {
var extent = new ol3.Extent(1, 2, 3, 4); var extent = new ol.Extent(1, 2, 3, 4);
var clonedExtent = extent.clone(); var clonedExtent = extent.clone();
assertTrue(clonedExtent instanceof ol3.Extent); assertTrue(clonedExtent instanceof ol.Extent);
assertFalse(clonedExtent === extent); assertFalse(clonedExtent === extent);
assertEquals(extent.minX, clonedExtent.minX); assertEquals(extent.minX, clonedExtent.minX);
assertEquals(extent.minY, clonedExtent.minY); assertEquals(extent.minY, clonedExtent.minY);
@@ -17,8 +17,8 @@ function testClone() {
function testTransform() { function testTransform() {
var transformFn = var transformFn =
ol3.Projection.getTransformFromCodes('EPSG:4326', 'EPSG:3857'); ol.Projection.getTransformFromCodes('EPSG:4326', 'EPSG:3857');
var sourceExtent = new ol3.Extent(-15, -30, 45, 60); var sourceExtent = new ol.Extent(-15, -30, 45, 60);
var destinationExtent = sourceExtent.transform(transformFn); var destinationExtent = sourceExtent.transform(transformFn);
assertNotNullNorUndefined(destinationExtent); assertNotNullNorUndefined(destinationExtent);
// FIXME check values with third-party tool // FIXME check values with third-party tool

View File

@@ -1,16 +1,16 @@
goog.provide('ol3.interaction.AltDragRotate'); goog.provide('ol.interaction.AltDragRotate');
goog.require('ol3.MapBrowserEvent'); goog.require('ol.MapBrowserEvent');
goog.require('ol3.interaction.Drag'); goog.require('ol.interaction.Drag');
/** /**
* @constructor * @constructor
* @extends {ol3.interaction.Drag} * @extends {ol.interaction.Drag}
* @param {ol3.interaction.Constraints} constraints Constraints. * @param {ol.interaction.Constraints} constraints Constraints.
*/ */
ol3.interaction.AltDragRotate = function(constraints) { ol.interaction.AltDragRotate = function(constraints) {
goog.base(this, constraints); goog.base(this, constraints);
@@ -21,13 +21,13 @@ ol3.interaction.AltDragRotate = function(constraints) {
this.startRotation_ = 0; this.startRotation_ = 0;
}; };
goog.inherits(ol3.interaction.AltDragRotate, ol3.interaction.Drag); goog.inherits(ol.interaction.AltDragRotate, ol.interaction.Drag);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.interaction.AltDragRotate.prototype.handleDrag = function(mapBrowserEvent) { ol.interaction.AltDragRotate.prototype.handleDrag = function(mapBrowserEvent) {
var browserEvent = mapBrowserEvent.browserEvent; var browserEvent = mapBrowserEvent.browserEvent;
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;
var size = map.getSize(); var size = map.getSize();
@@ -41,7 +41,7 @@ ol3.interaction.AltDragRotate.prototype.handleDrag = function(mapBrowserEvent) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.interaction.AltDragRotate.prototype.handleDragStart = ol.interaction.AltDragRotate.prototype.handleDragStart =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var browserEvent = mapBrowserEvent.browserEvent; var browserEvent = mapBrowserEvent.browserEvent;
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;

View File

@@ -0,0 +1,47 @@
goog.provide('ol.interaction.CenterConstraint');
goog.provide('ol.interaction.CenterConstraintType');
goog.require('ol.Coordinate');
/**
* @typedef {function((ol.Coordinate|undefined),
* (number|undefined),
* ol.Coordinate): (ol.Coordinate|undefined)}
*/
ol.interaction.CenterConstraintType;
/**
* @param {ol.Coordinate|undefined} center Center.
* @param {number|undefined} resolution Resolution.
* @param {ol.Coordinate} delta Delta.
* @return {ol.Coordinate|undefined} Center.
*/
ol.interaction.CenterConstraint.none = function(center, resolution, delta) {
if (goog.isDefAndNotNull(center) && goog.isDef(resolution)) {
var x = center.x + delta.x;
var y = center.y + delta.y;
return new ol.Coordinate(x, y);
} else {
return undefined;
}
};
/**
* @param {ol.Coordinate|undefined} center Center.
* @param {number|undefined} resolution Resolution.
* @param {ol.Coordinate} delta Delta.
* @return {ol.Coordinate|undefined} Center.
*/
ol.interaction.CenterConstraint.snapToPixel =
function(center, resolution, delta) {
if (goog.isDefAndNotNull(center) && goog.isDef(resolution)) {
var x = Math.floor((center.x + delta.x) / resolution + 0.5) * resolution;
var y = Math.floor((center.y + delta.y) / resolution + 0.5) * resolution;
return new ol.Coordinate(x, y);
} else {
return undefined;
}
};

View File

@@ -0,0 +1,36 @@
goog.provide('ol.interaction.Constraints');
goog.require('ol.interaction.CenterConstraintType');
goog.require('ol.interaction.ResolutionConstraintType');
goog.require('ol.interaction.RotationConstraintType');
/**
* @constructor
* @param {ol.interaction.CenterConstraintType} centerConstraint
* Center constraint.
* @param {ol.interaction.ResolutionConstraintType} resolutionConstraint
* Resolution constraint.
* @param {ol.interaction.RotationConstraintType} rotationConstraint
* Rotation constraint.
*/
ol.interaction.Constraints =
function(centerConstraint, resolutionConstraint, rotationConstraint) {
/**
* @type {ol.interaction.CenterConstraintType}
*/
this.center = centerConstraint;
/**
* @type {ol.interaction.ResolutionConstraintType}
*/
this.resolution = resolutionConstraint;
/**
* @type {ol.interaction.RotationConstraintType}
*/
this.rotation = rotationConstraint;
};

View File

@@ -1,27 +1,27 @@
goog.provide('ol3.interaction.DblClickZoom'); goog.provide('ol.interaction.DblClickZoom');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('ol3.Interaction'); goog.require('ol.Interaction');
goog.require('ol3.MapBrowserEvent'); goog.require('ol.MapBrowserEvent');
goog.require('ol3.interaction.Constraints'); goog.require('ol.interaction.Constraints');
/** /**
* @constructor * @constructor
* @extends {ol3.Interaction} * @extends {ol.Interaction}
* @param {ol3.interaction.Constraints} constraints Constraints. * @param {ol.interaction.Constraints} constraints Constraints.
*/ */
ol3.interaction.DblClickZoom = function(constraints) { ol.interaction.DblClickZoom = function(constraints) {
goog.base(this, constraints); goog.base(this, constraints);
}; };
goog.inherits(ol3.interaction.DblClickZoom, ol3.Interaction); goog.inherits(ol.interaction.DblClickZoom, ol.Interaction);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.interaction.DblClickZoom.prototype.handleMapBrowserEvent = ol.interaction.DblClickZoom.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var browserEvent = mapBrowserEvent.browserEvent; var browserEvent = mapBrowserEvent.browserEvent;
if (browserEvent.type == goog.events.EventType.DBLCLICK && if (browserEvent.type == goog.events.EventType.DBLCLICK &&

View File

@@ -1,22 +1,22 @@
goog.provide('ol3.interaction.Drag'); goog.provide('ol.interaction.Drag');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('goog.functions'); goog.require('goog.functions');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.Interaction'); goog.require('ol.Interaction');
goog.require('ol3.MapBrowserEvent'); goog.require('ol.MapBrowserEvent');
goog.require('ol3.interaction.Constraints'); goog.require('ol.interaction.Constraints');
/** /**
* @constructor * @constructor
* @extends {ol3.Interaction} * @extends {ol.Interaction}
* @param {ol3.interaction.Constraints} constraints Constraints. * @param {ol.interaction.Constraints} constraints Constraints.
*/ */
ol3.interaction.Drag = function(constraints) { ol.interaction.Drag = function(constraints) {
goog.base(this, constraints); goog.base(this, constraints);
@@ -47,45 +47,45 @@ ol3.interaction.Drag = function(constraints) {
this.offsetY = 0; this.offsetY = 0;
/** /**
* @type {ol3.Coordinate} * @type {ol.Coordinate}
*/ */
this.startCenter = null; this.startCenter = null;
/** /**
* @type {ol3.Coordinate} * @type {ol.Coordinate}
*/ */
this.startCoordinate = null; this.startCoordinate = null;
}; };
goog.inherits(ol3.interaction.Drag, ol3.Interaction); goog.inherits(ol.interaction.Drag, ol.Interaction);
/** /**
* @param {ol3.MapBrowserEvent} mapBrowserEvent Event. * @param {ol.MapBrowserEvent} mapBrowserEvent Event.
* @protected * @protected
*/ */
ol3.interaction.Drag.prototype.handleDrag = goog.nullFunction; ol.interaction.Drag.prototype.handleDrag = goog.nullFunction;
/** /**
* @param {ol3.MapBrowserEvent} mapBrowserEvent Event. * @param {ol.MapBrowserEvent} mapBrowserEvent Event.
* @protected * @protected
*/ */
ol3.interaction.Drag.prototype.handleDragEnd = goog.nullFunction; ol.interaction.Drag.prototype.handleDragEnd = goog.nullFunction;
/** /**
* @param {ol3.MapBrowserEvent} mapBrowserEvent Event. * @param {ol.MapBrowserEvent} mapBrowserEvent Event.
* @protected * @protected
* @return {boolean} Capture dragging. * @return {boolean} Capture dragging.
*/ */
ol3.interaction.Drag.prototype.handleDragStart = goog.functions.FALSE; ol.interaction.Drag.prototype.handleDragStart = goog.functions.FALSE;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.interaction.Drag.prototype.handleMapBrowserEvent = ol.interaction.Drag.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;
if (!map.isDef()) { if (!map.isDef()) {
@@ -111,8 +111,8 @@ ol3.interaction.Drag.prototype.handleMapBrowserEvent =
this.startY = browserEvent.clientY; this.startY = browserEvent.clientY;
this.deltaX = 0; this.deltaX = 0;
this.deltaY = 0; this.deltaY = 0;
this.startCenter = /** @type {!ol3.Coordinate} */ map.getCenter(); this.startCenter = /** @type {!ol.Coordinate} */ map.getCenter();
this.startCoordinate = /** @type {ol3.Coordinate} */ this.startCoordinate = /** @type {ol.Coordinate} */
mapBrowserEvent.getCoordinate(); mapBrowserEvent.getCoordinate();
if (this.handleDragStart(mapBrowserEvent)) { if (this.handleDragStart(mapBrowserEvent)) {
this.dragging_ = true; this.dragging_ = true;

View File

@@ -0,0 +1,48 @@
goog.provide('ol.interaction.DragPan');
goog.require('ol.Coordinate');
goog.require('ol.MapBrowserEvent');
goog.require('ol.interaction.Constraints');
goog.require('ol.interaction.Drag');
/**
* @constructor
* @extends {ol.interaction.Drag}
* @param {ol.interaction.Constraints} constraints Constraints.
*/
ol.interaction.DragPan = function(constraints) {
goog.base(this, constraints);
};
goog.inherits(ol.interaction.DragPan, ol.interaction.Drag);
/**
* @inheritDoc
*/
ol.interaction.DragPan.prototype.handleDrag = function(mapBrowserEvent) {
var map = mapBrowserEvent.map;
var resolution = map.getResolution();
var rotation = map.getRotation();
var delta =
new ol.Coordinate(-resolution * this.deltaX, resolution * this.deltaY);
if (map.canRotate() && goog.isDef(rotation)) {
delta.rotate(rotation);
}
this.pan(map, delta, this.startCenter);
};
/**
* @inheritDoc
*/
ol.interaction.DragPan.prototype.handleDragStart = function(mapBrowserEvent) {
var browserEvent = mapBrowserEvent.browserEvent;
if (!browserEvent.shiftKey) {
browserEvent.preventDefault();
return true;
} else {
return false;
}
};

View File

@@ -1,21 +1,21 @@
// FIXME factor out key precondition (shift et. al) // FIXME factor out key precondition (shift et. al)
goog.provide('ol3.Interaction'); goog.provide('ol.Interaction');
goog.require('ol3.MapBrowserEvent'); goog.require('ol.MapBrowserEvent');
goog.require('ol3.interaction.Constraints'); goog.require('ol.interaction.Constraints');
/** /**
* @constructor * @constructor
* @param {ol3.interaction.Constraints} constraints Constraints. * @param {ol.interaction.Constraints} constraints Constraints.
*/ */
ol3.Interaction = function(constraints) { ol.Interaction = function(constraints) {
/** /**
* @protected * @protected
* @type {ol3.interaction.Constraints} * @type {ol.interaction.Constraints}
*/ */
this.constraints = constraints; this.constraints = constraints;
@@ -23,14 +23,14 @@ ol3.Interaction = function(constraints) {
/** /**
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
* @param {ol3.Extent} extent Extent. * @param {ol.Extent} extent Extent.
*/ */
ol3.Interaction.prototype.fitExtent = function(map, extent) { ol.Interaction.prototype.fitExtent = function(map, extent) {
var resolution = map.getResolutionForExtent(extent); var resolution = map.getResolutionForExtent(extent);
resolution = this.constraints.resolution(resolution, 0); resolution = this.constraints.resolution(resolution, 0);
var center = extent.getCenter(); var center = extent.getCenter();
center = this.constraints.center(center, resolution, ol3.Coordinate.ZERO); center = this.constraints.center(center, resolution, ol.Coordinate.ZERO);
map.withFrozenRendering(function() { map.withFrozenRendering(function() {
map.setCenter(center); map.setCenter(center);
map.setResolution(resolution); map.setResolution(resolution);
@@ -39,17 +39,17 @@ ol3.Interaction.prototype.fitExtent = function(map, extent) {
/** /**
* @param {ol3.MapBrowserEvent} mapBrowserEvent Map browser event. * @param {ol.MapBrowserEvent} mapBrowserEvent Map browser event.
*/ */
ol3.Interaction.prototype.handleMapBrowserEvent = goog.abstractMethod; ol.Interaction.prototype.handleMapBrowserEvent = goog.abstractMethod;
/** /**
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
* @param {ol3.Coordinate} delta Delta. * @param {ol.Coordinate} delta Delta.
* @param {ol3.Coordinate=} opt_anchor Anchor. * @param {ol.Coordinate=} opt_anchor Anchor.
*/ */
ol3.Interaction.prototype.pan = function(map, delta, opt_anchor) { ol.Interaction.prototype.pan = function(map, delta, opt_anchor) {
var center = opt_anchor ? opt_anchor : map.getCenter(); var center = opt_anchor ? opt_anchor : map.getCenter();
var resolution = map.getResolution(); var resolution = map.getResolution();
center = this.constraints.center(center, resolution, delta); center = this.constraints.center(center, resolution, delta);
@@ -58,12 +58,12 @@ ol3.Interaction.prototype.pan = function(map, delta, opt_anchor) {
/** /**
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
* @param {number|undefined} rotation Rotation. * @param {number|undefined} rotation Rotation.
* @param {number} delta Delta. * @param {number} delta Delta.
* @param {ol3.Coordinate=} opt_anchor Anchor. * @param {ol.Coordinate=} opt_anchor Anchor.
*/ */
ol3.Interaction.prototype.rotate = function(map, rotation, delta, opt_anchor) { ol.Interaction.prototype.rotate = function(map, rotation, delta, opt_anchor) {
// FIXME handle rotation about anchor // FIXME handle rotation about anchor
rotation = this.constraints.rotation(rotation, delta); rotation = this.constraints.rotation(rotation, delta);
map.setRotation(rotation); map.setRotation(rotation);
@@ -71,31 +71,31 @@ ol3.Interaction.prototype.rotate = function(map, rotation, delta, opt_anchor) {
/** /**
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
* @param {number|undefined} resolution Resolution. * @param {number|undefined} resolution Resolution.
*/ */
ol3.Interaction.prototype.setResolution = function(map, resolution) { ol.Interaction.prototype.setResolution = function(map, resolution) {
resolution = this.constraints.resolution(resolution, 0); resolution = this.constraints.resolution(resolution, 0);
map.setResolution(resolution); map.setResolution(resolution);
}; };
/** /**
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
* @param {number|undefined} resolution Resolution. * @param {number|undefined} resolution Resolution.
* @param {number} delta Delta. * @param {number} delta Delta.
* @param {ol3.Coordinate=} opt_anchor Anchor. * @param {ol.Coordinate=} opt_anchor Anchor.
*/ */
ol3.Interaction.prototype.zoom = function(map, resolution, delta, opt_anchor) { ol.Interaction.prototype.zoom = function(map, resolution, delta, opt_anchor) {
if (goog.isDefAndNotNull(opt_anchor)) { if (goog.isDefAndNotNull(opt_anchor)) {
var anchor = opt_anchor; var anchor = opt_anchor;
var mapCenter = /** @type {!ol3.Coordinate} */ map.getCenter(); var mapCenter = /** @type {!ol.Coordinate} */ map.getCenter();
var mapResolution = map.getResolution(); var mapResolution = map.getResolution();
resolution = this.constraints.resolution(resolution, delta); resolution = this.constraints.resolution(resolution, delta);
var x = anchor.x - resolution * (anchor.x - mapCenter.x) / mapResolution; var x = anchor.x - resolution * (anchor.x - mapCenter.x) / mapResolution;
var y = anchor.y - resolution * (anchor.y - mapCenter.y) / mapResolution; var y = anchor.y - resolution * (anchor.y - mapCenter.y) / mapResolution;
var center = new ol3.Coordinate(x, y); var center = new ol.Coordinate(x, y);
center = this.constraints.center(center, resolution, ol3.Coordinate.ZERO); center = this.constraints.center(center, resolution, ol.Coordinate.ZERO);
map.withFrozenRendering(function() { map.withFrozenRendering(function() {
map.setCenter(center); map.setCenter(center);
map.setResolution(resolution); map.setResolution(resolution);

View File

@@ -1,16 +1,16 @@
// FIXME this class is ugly and should be removed // FIXME this class is ugly and should be removed
goog.provide('ol3.interaction.Keyboard'); goog.provide('ol.interaction.Keyboard');
goog.require('ol3.Interaction'); goog.require('ol.Interaction');
/** /**
* @constructor * @constructor
* @extends {ol3.Interaction} * @extends {ol.Interaction}
*/ */
ol3.interaction.Keyboard = function() { ol.interaction.Keyboard = function() {
goog.base(this, null); goog.base(this, null);
@@ -21,14 +21,14 @@ ol3.interaction.Keyboard = function() {
this.charCodeCallbacks_ = {}; this.charCodeCallbacks_ = {};
}; };
goog.inherits(ol3.interaction.Keyboard, ol3.Interaction); goog.inherits(ol.interaction.Keyboard, ol.Interaction);
/** /**
* @param {string} s String. * @param {string} s String.
* @param {Function} callback Callback. * @param {Function} callback Callback.
*/ */
ol3.interaction.Keyboard.prototype.addCallback = function(s, callback) { ol.interaction.Keyboard.prototype.addCallback = function(s, callback) {
var i; var i;
for (i = 0; i < s.length; ++i) { for (i = 0; i < s.length; ++i) {
this.charCodeCallbacks_[s.charCodeAt(i)] = callback; this.charCodeCallbacks_[s.charCodeAt(i)] = callback;
@@ -39,7 +39,7 @@ ol3.interaction.Keyboard.prototype.addCallback = function(s, callback) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.interaction.Keyboard.prototype.handleMapBrowserEvent = ol.interaction.Keyboard.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) {
var keyEvent = /** @type {goog.events.KeyEvent} */ var keyEvent = /** @type {goog.events.KeyEvent} */

View File

@@ -1,19 +1,19 @@
goog.provide('ol3.interaction.KeyboardPan'); goog.provide('ol.interaction.KeyboardPan');
goog.require('goog.events.KeyCodes'); goog.require('goog.events.KeyCodes');
goog.require('goog.events.KeyHandler.EventType'); goog.require('goog.events.KeyHandler.EventType');
goog.require('ol3.Interaction'); goog.require('ol.Interaction');
goog.require('ol3.interaction.Constraints'); goog.require('ol.interaction.Constraints');
/** /**
* @constructor * @constructor
* @extends {ol3.Interaction} * @extends {ol.Interaction}
* @param {ol3.interaction.Constraints} constraints Constraints. * @param {ol.interaction.Constraints} constraints Constraints.
* @param {number} pixelDelta Pixel delta. * @param {number} pixelDelta Pixel delta.
*/ */
ol3.interaction.KeyboardPan = function(constraints, pixelDelta) { ol.interaction.KeyboardPan = function(constraints, pixelDelta) {
goog.base(this, constraints); goog.base(this, constraints);
@@ -24,13 +24,13 @@ ol3.interaction.KeyboardPan = function(constraints, pixelDelta) {
this.pixelDelta_ = pixelDelta; this.pixelDelta_ = pixelDelta;
}; };
goog.inherits(ol3.interaction.KeyboardPan, ol3.Interaction); goog.inherits(ol.interaction.KeyboardPan, ol.Interaction);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.interaction.KeyboardPan.prototype.handleMapBrowserEvent = ol.interaction.KeyboardPan.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) {
var keyEvent = /** @type {goog.events.KeyEvent} */ var keyEvent = /** @type {goog.events.KeyEvent} */
@@ -45,14 +45,14 @@ ol3.interaction.KeyboardPan.prototype.handleMapBrowserEvent =
var delta; var delta;
var mapUnitsDelta = resolution * this.pixelDelta_; var mapUnitsDelta = resolution * this.pixelDelta_;
if (keyCode == goog.events.KeyCodes.DOWN) { if (keyCode == goog.events.KeyCodes.DOWN) {
delta = new ol3.Coordinate(0, -mapUnitsDelta); delta = new ol.Coordinate(0, -mapUnitsDelta);
} else if (keyCode == goog.events.KeyCodes.LEFT) { } else if (keyCode == goog.events.KeyCodes.LEFT) {
delta = new ol3.Coordinate(-mapUnitsDelta, 0); delta = new ol.Coordinate(-mapUnitsDelta, 0);
} else if (keyCode == goog.events.KeyCodes.RIGHT) { } else if (keyCode == goog.events.KeyCodes.RIGHT) {
delta = new ol3.Coordinate(mapUnitsDelta, 0); delta = new ol.Coordinate(mapUnitsDelta, 0);
} else { } else {
goog.asserts.assert(keyCode == goog.events.KeyCodes.UP); goog.asserts.assert(keyCode == goog.events.KeyCodes.UP);
delta = new ol3.Coordinate(0, mapUnitsDelta); delta = new ol.Coordinate(0, mapUnitsDelta);
} }
this.pan(map, delta); this.pan(map, delta);
keyEvent.preventDefault(); keyEvent.preventDefault();

View File

@@ -1,27 +1,27 @@
goog.provide('ol3.interaction.KeyboardZoom'); goog.provide('ol.interaction.KeyboardZoom');
goog.require('goog.events.KeyCodes'); goog.require('goog.events.KeyCodes');
goog.require('goog.events.KeyHandler.EventType'); goog.require('goog.events.KeyHandler.EventType');
goog.require('ol3.Interaction'); goog.require('ol.Interaction');
goog.require('ol3.interaction.ResolutionConstraintType'); goog.require('ol.interaction.ResolutionConstraintType');
/** /**
* @constructor * @constructor
* @extends {ol3.Interaction} * @extends {ol.Interaction}
* @param {ol3.interaction.Constraints} constraints Constraints. * @param {ol.interaction.Constraints} constraints Constraints.
*/ */
ol3.interaction.KeyboardZoom = function(constraints) { ol.interaction.KeyboardZoom = function(constraints) {
goog.base(this, constraints); goog.base(this, constraints);
}; };
goog.inherits(ol3.interaction.KeyboardZoom, ol3.Interaction); goog.inherits(ol.interaction.KeyboardZoom, ol.Interaction);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.interaction.KeyboardZoom.prototype.handleMapBrowserEvent = ol.interaction.KeyboardZoom.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) { if (mapBrowserEvent.type == goog.events.KeyHandler.EventType.KEY) {
var keyEvent = /** @type {goog.events.KeyEvent} */ var keyEvent = /** @type {goog.events.KeyEvent} */

View File

@@ -1,27 +1,27 @@
goog.provide('ol3.interaction.MouseWheelZoom'); goog.provide('ol.interaction.MouseWheelZoom');
goog.require('goog.events.MouseWheelEvent'); goog.require('goog.events.MouseWheelEvent');
goog.require('goog.events.MouseWheelHandler.EventType'); goog.require('goog.events.MouseWheelHandler.EventType');
goog.require('ol3.MapBrowserEvent'); goog.require('ol.MapBrowserEvent');
goog.require('ol3.interaction.Constraints'); goog.require('ol.interaction.Constraints');
/** /**
* @constructor * @constructor
* @extends {ol3.Interaction} * @extends {ol.Interaction}
* @param {ol3.interaction.Constraints} constraints Constraints. * @param {ol.interaction.Constraints} constraints Constraints.
*/ */
ol3.interaction.MouseWheelZoom = function(constraints) { ol.interaction.MouseWheelZoom = function(constraints) {
goog.base(this, constraints); goog.base(this, constraints);
}; };
goog.inherits(ol3.interaction.MouseWheelZoom, ol3.Interaction); goog.inherits(ol.interaction.MouseWheelZoom, ol.Interaction);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.interaction.MouseWheelZoom.prototype.handleMapBrowserEvent = ol.interaction.MouseWheelZoom.prototype.handleMapBrowserEvent =
function(mapBrowserEvent) { function(mapBrowserEvent) {
if (mapBrowserEvent.type == if (mapBrowserEvent.type ==
goog.events.MouseWheelHandler.EventType.MOUSEWHEEL) { goog.events.MouseWheelHandler.EventType.MOUSEWHEEL) {

View File

@@ -1,23 +1,23 @@
goog.provide('ol3.interaction.ResolutionConstraint'); goog.provide('ol.interaction.ResolutionConstraint');
goog.provide('ol3.interaction.ResolutionConstraintType'); goog.provide('ol.interaction.ResolutionConstraintType');
goog.require('goog.math'); goog.require('goog.math');
goog.require('ol3.array'); goog.require('ol.array');
/** /**
* @typedef {function((number|undefined), number): (number|undefined)} * @typedef {function((number|undefined), number): (number|undefined)}
*/ */
ol3.interaction.ResolutionConstraintType; ol.interaction.ResolutionConstraintType;
/** /**
* @param {number} power Power. * @param {number} power Power.
* @param {number} maxResolution Maximum resolution. * @param {number} maxResolution Maximum resolution.
* @param {number=} opt_minResolution Minimum resolution. * @param {number=} opt_minResolution Minimum resolution.
* @return {ol3.interaction.ResolutionConstraintType} Zoom function. * @return {ol.interaction.ResolutionConstraintType} Zoom function.
*/ */
ol3.interaction.ResolutionConstraint.createContinuous = ol.interaction.ResolutionConstraint.createContinuous =
function(power, maxResolution, opt_minResolution) { function(power, maxResolution, opt_minResolution) {
var minResolution = opt_minResolution || 0; var minResolution = opt_minResolution || 0;
return function(resolution, delta) { return function(resolution, delta) {
@@ -33,13 +33,13 @@ ol3.interaction.ResolutionConstraint.createContinuous =
/** /**
* @param {Array.<number>} resolutions Resolutions. * @param {Array.<number>} resolutions Resolutions.
* @return {ol3.interaction.ResolutionConstraintType} Zoom function. * @return {ol.interaction.ResolutionConstraintType} Zoom function.
*/ */
ol3.interaction.ResolutionConstraint.createSnapToResolutions = ol.interaction.ResolutionConstraint.createSnapToResolutions =
function(resolutions) { function(resolutions) {
return function(resolution, delta) { return function(resolution, delta) {
if (goog.isDef(resolution)) { if (goog.isDef(resolution)) {
var z = ol3.array.linearFindNearest(resolutions, resolution); var z = ol.array.linearFindNearest(resolutions, resolution);
z = goog.math.clamp(z + delta, 0, resolutions.length - 1); z = goog.math.clamp(z + delta, 0, resolutions.length - 1);
return resolutions[z]; return resolutions[z];
} else { } else {
@@ -53,9 +53,9 @@ ol3.interaction.ResolutionConstraint.createSnapToResolutions =
* @param {number} power Power. * @param {number} power Power.
* @param {number} maxResolution Maximum resolution. * @param {number} maxResolution Maximum resolution.
* @param {number=} opt_maxLevel Maximum level. * @param {number=} opt_maxLevel Maximum level.
* @return {ol3.interaction.ResolutionConstraintType} Zoom function. * @return {ol.interaction.ResolutionConstraintType} Zoom function.
*/ */
ol3.interaction.ResolutionConstraint.createSnapToPower = ol.interaction.ResolutionConstraint.createSnapToPower =
function(power, maxResolution, opt_maxLevel) { function(power, maxResolution, opt_maxLevel) {
return function(resolution, delta) { return function(resolution, delta) {
if (goog.isDef(resolution)) { if (goog.isDef(resolution)) {

View File

@@ -1,10 +1,10 @@
goog.require('goog.testing.jsunit'); goog.require('goog.testing.jsunit');
goog.require('ol3.interaction.ResolutionConstraint'); goog.require('ol.interaction.ResolutionConstraint');
function testSnapToResolutionsZero() { function testSnapToResolutionsZero() {
var resolutionConstraint = var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToResolutions( ol.interaction.ResolutionConstraint.createSnapToResolutions(
[1000, 500, 250, 100]); [1000, 500, 250, 100]);
assertEquals(1000, resolutionConstraint(1000, 0)); assertEquals(1000, resolutionConstraint(1000, 0));
assertEquals(500, resolutionConstraint(500, 0)); assertEquals(500, resolutionConstraint(500, 0));
@@ -15,7 +15,7 @@ function testSnapToResolutionsZero() {
function testSnapToResolutionsZoomIn() { function testSnapToResolutionsZoomIn() {
var resolutionConstraint = var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToResolutions( ol.interaction.ResolutionConstraint.createSnapToResolutions(
[1000, 500, 250, 100]); [1000, 500, 250, 100]);
assertEquals(500, resolutionConstraint(1000, 1)); assertEquals(500, resolutionConstraint(1000, 1));
assertEquals(250, resolutionConstraint(500, 1)); assertEquals(250, resolutionConstraint(500, 1));
@@ -26,7 +26,7 @@ function testSnapToResolutionsZoomIn() {
function testSnapToResolutionsZoomOut() { function testSnapToResolutionsZoomOut() {
var resolutionConstraint = var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToResolutions( ol.interaction.ResolutionConstraint.createSnapToResolutions(
[1000, 500, 250, 100]); [1000, 500, 250, 100]);
assertEquals(1000, resolutionConstraint(1000, -1)); assertEquals(1000, resolutionConstraint(1000, -1));
assertEquals(1000, resolutionConstraint(500, -1)); assertEquals(1000, resolutionConstraint(500, -1));
@@ -37,7 +37,7 @@ function testSnapToResolutionsZoomOut() {
function testSnapToResolutionsNearestZero() { function testSnapToResolutionsNearestZero() {
var resolutionConstraint = var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToResolutions( ol.interaction.ResolutionConstraint.createSnapToResolutions(
[1000, 500, 250, 100]); [1000, 500, 250, 100]);
assertEquals(1000, resolutionConstraint(1050, 0)); assertEquals(1000, resolutionConstraint(1050, 0));
assertEquals(1000, resolutionConstraint(950, 0)); assertEquals(1000, resolutionConstraint(950, 0));
@@ -52,7 +52,7 @@ function testSnapToResolutionsNearestZero() {
function testSnapToResolutionsNearestZoomIn() { function testSnapToResolutionsNearestZoomIn() {
var resolutionConstraint = var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToResolutions( ol.interaction.ResolutionConstraint.createSnapToResolutions(
[1000, 500, 250, 100]); [1000, 500, 250, 100]);
assertEquals(500, resolutionConstraint(1050, 1)); assertEquals(500, resolutionConstraint(1050, 1));
assertEquals(500, resolutionConstraint(950, 1)); assertEquals(500, resolutionConstraint(950, 1));
@@ -67,7 +67,7 @@ function testSnapToResolutionsNearestZoomIn() {
function testSnapToResolutionsNearestZoomOut() { function testSnapToResolutionsNearestZoomOut() {
var resolutionConstraint = var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToResolutions( ol.interaction.ResolutionConstraint.createSnapToResolutions(
[1000, 500, 250, 100]); [1000, 500, 250, 100]);
assertEquals(1000, resolutionConstraint(1050, -1)); assertEquals(1000, resolutionConstraint(1050, -1));
assertEquals(1000, resolutionConstraint(950, -1)); assertEquals(1000, resolutionConstraint(950, -1));
@@ -82,7 +82,7 @@ function testSnapToResolutionsNearestZoomOut() {
function testSnapToPowerZero() { function testSnapToPowerZero() {
var resolutionConstraint = var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10); ol.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10);
assertEquals(1024, resolutionConstraint(1024, 0)); assertEquals(1024, resolutionConstraint(1024, 0));
assertEquals(512, resolutionConstraint(512, 0)); assertEquals(512, resolutionConstraint(512, 0));
assertEquals(256, resolutionConstraint(256, 0)); assertEquals(256, resolutionConstraint(256, 0));
@@ -99,7 +99,7 @@ function testSnapToPowerZero() {
function testSnapToPowerZoomIn() { function testSnapToPowerZoomIn() {
var resolutionConstraint = var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10); ol.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10);
assertEquals(512, resolutionConstraint(1024, 1)); assertEquals(512, resolutionConstraint(1024, 1));
assertEquals(256, resolutionConstraint(512, 1)); assertEquals(256, resolutionConstraint(512, 1));
assertEquals(128, resolutionConstraint(256, 1)); assertEquals(128, resolutionConstraint(256, 1));
@@ -116,7 +116,7 @@ function testSnapToPowerZoomIn() {
function testSnapToPowerZoomOut() { function testSnapToPowerZoomOut() {
var resolutionConstraint = var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10); ol.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10);
assertEquals(1024, resolutionConstraint(1024, -1)); assertEquals(1024, resolutionConstraint(1024, -1));
assertEquals(1024, resolutionConstraint(512, -1)); assertEquals(1024, resolutionConstraint(512, -1));
assertEquals(512, resolutionConstraint(256, -1)); assertEquals(512, resolutionConstraint(256, -1));
@@ -133,7 +133,7 @@ function testSnapToPowerZoomOut() {
function testSnapToPowerNearestZero() { function testSnapToPowerNearestZero() {
var resolutionConstraint = var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10); ol.interaction.ResolutionConstraint.createSnapToPower(2, 1024, 10);
assertEquals(1024, resolutionConstraint(1050, 0)); assertEquals(1024, resolutionConstraint(1050, 0));
assertEquals(1024, resolutionConstraint(9050, 0)); assertEquals(1024, resolutionConstraint(9050, 0));
assertEquals(512, resolutionConstraint(550, 0)); assertEquals(512, resolutionConstraint(550, 0));

View File

@@ -1,11 +1,11 @@
goog.provide('ol3.interaction.RotationConstraint'); goog.provide('ol.interaction.RotationConstraint');
goog.provide('ol3.interaction.RotationConstraintType'); goog.provide('ol.interaction.RotationConstraintType');
/** /**
* @typedef {function((number|undefined), number): (number|undefined)} * @typedef {function((number|undefined), number): (number|undefined)}
*/ */
ol3.interaction.RotationConstraintType; ol.interaction.RotationConstraintType;
/** /**
@@ -13,7 +13,7 @@ ol3.interaction.RotationConstraintType;
* @param {number} delta Delta. * @param {number} delta Delta.
* @return {number|undefined} Rotation. * @return {number|undefined} Rotation.
*/ */
ol3.interaction.RotationConstraint.none = function(rotation, delta) { ol.interaction.RotationConstraint.none = function(rotation, delta) {
if (goog.isDef(rotation)) { if (goog.isDef(rotation)) {
return rotation + delta; return rotation + delta;
} else { } else {
@@ -24,9 +24,9 @@ ol3.interaction.RotationConstraint.none = function(rotation, delta) {
/** /**
* @param {number} n N. * @param {number} n N.
* @return {ol3.interaction.RotationConstraintType} Rotation constraint. * @return {ol.interaction.RotationConstraintType} Rotation constraint.
*/ */
ol3.interaction.RotationConstraint.createSnapToN = function(n) { ol.interaction.RotationConstraint.createSnapToN = function(n) {
var theta = 2 * Math.PI / n; var theta = 2 * Math.PI / n;
return function(rotation, delta) { return function(rotation, delta) {
if (goog.isDef(rotation)) { if (goog.isDef(rotation)) {

View File

@@ -1,18 +1,18 @@
goog.provide('ol3.interaction.ShiftDragRotateAndZoom'); goog.provide('ol.interaction.ShiftDragRotateAndZoom');
goog.require('goog.math.Vec2'); goog.require('goog.math.Vec2');
goog.require('ol3.MapBrowserEvent'); goog.require('ol.MapBrowserEvent');
goog.require('ol3.interaction.Constraints'); goog.require('ol.interaction.Constraints');
goog.require('ol3.interaction.Drag'); goog.require('ol.interaction.Drag');
/** /**
* @constructor * @constructor
* @extends {ol3.interaction.Drag} * @extends {ol.interaction.Drag}
* @param {ol3.interaction.Constraints} constraints Constraints. * @param {ol.interaction.Constraints} constraints Constraints.
*/ */
ol3.interaction.ShiftDragRotateAndZoom = function(constraints) { ol.interaction.ShiftDragRotateAndZoom = function(constraints) {
goog.base(this, constraints); goog.base(this, constraints);
@@ -29,13 +29,13 @@ ol3.interaction.ShiftDragRotateAndZoom = function(constraints) {
this.startRotation_ = 0; this.startRotation_ = 0;
}; };
goog.inherits(ol3.interaction.ShiftDragRotateAndZoom, ol3.interaction.Drag); goog.inherits(ol.interaction.ShiftDragRotateAndZoom, ol.interaction.Drag);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.interaction.ShiftDragRotateAndZoom.prototype.handleDrag = ol.interaction.ShiftDragRotateAndZoom.prototype.handleDrag =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var browserEvent = mapBrowserEvent.browserEvent; var browserEvent = mapBrowserEvent.browserEvent;
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;
@@ -54,7 +54,7 @@ ol3.interaction.ShiftDragRotateAndZoom.prototype.handleDrag =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.interaction.ShiftDragRotateAndZoom.prototype.handleDragStart = ol.interaction.ShiftDragRotateAndZoom.prototype.handleDragStart =
function(mapBrowserEvent) { function(mapBrowserEvent) {
var browserEvent = mapBrowserEvent.browserEvent; var browserEvent = mapBrowserEvent.browserEvent;
var map = mapBrowserEvent.map; var map = mapBrowserEvent.map;

View File

@@ -0,0 +1,65 @@
// FIXME draw drag box
goog.provide('ol.interaction.ShiftDragZoom');
goog.require('ol.Extent');
goog.require('ol.MapBrowserEvent');
goog.require('ol.interaction.Constraints');
goog.require('ol.interaction.Drag');
/**
* @define {number} Hysterisis pixels.
*/
ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS = 8;
/**
* @const {number}
*/
ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS_SQUARED =
ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS *
ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS;
/**
* @constructor
* @extends {ol.interaction.Drag}
* @param {ol.interaction.Constraints} constraints Constraints.
*/
ol.interaction.ShiftDragZoom = function(constraints) {
goog.base(this, constraints);
};
goog.inherits(ol.interaction.ShiftDragZoom, ol.interaction.Drag);
/**
* @inheritDoc
*/
ol.interaction.ShiftDragZoom.prototype.handleDragEnd =
function(mapBrowserEvent) {
if (this.deltaX * this.deltaX + this.deltaY * this.deltaY >=
ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS_SQUARED) {
var map = mapBrowserEvent.map;
var extent = ol.Extent.boundingExtent(
this.startCoordinate,
mapBrowserEvent.getCoordinate());
this.fitExtent(map, extent);
}
};
/**
* @inheritDoc
*/
ol.interaction.ShiftDragZoom.prototype.handleDragStart =
function(mapBrowserEvent) {
var browserEvent = mapBrowserEvent.browserEvent;
if (browserEvent.isMouseActionButton() && browserEvent.shiftKey) {
browserEvent.preventDefault();
return true;
} else {
return false;
}
};

228
src/ol/layer.js Normal file
View File

@@ -0,0 +1,228 @@
goog.provide('ol.Layer');
goog.provide('ol.LayerProperty');
goog.require('goog.math');
goog.require('ol.Object');
goog.require('ol.Store');
/**
* @enum {string}
*/
ol.LayerProperty = {
BRIGHTNESS: 'brightness',
CONTRAST: 'contrast',
HUE: 'hue',
OPACITY: 'opacity',
SATURATION: 'saturation',
VISIBLE: 'visible'
};
/**
* @constructor
* @extends {ol.Object}
* @param {ol.Store} store Store.
* @param {Object.<string, *>=} opt_values Values.
*/
ol.Layer = function(store, opt_values) {
goog.base(this);
/**
* @private
* @type {ol.Store}
*/
this.store_ = store;
this.setBrightness(0);
this.setContrast(0);
this.setHue(0);
this.setOpacity(1);
this.setSaturation(0);
this.setVisible(true);
if (goog.isDef(opt_values)) {
this.setValues(opt_values);
}
};
goog.inherits(ol.Layer, ol.Object);
/**
* @return {number} Brightness.
*/
ol.Layer.prototype.getBrightness = function() {
return /** @type {number} */ this.get(ol.LayerProperty.BRIGHTNESS);
};
goog.exportProperty(
ol.Layer.prototype,
'getBrightness',
ol.Layer.prototype.getBrightness);
/**
* @return {number} Contrast.
*/
ol.Layer.prototype.getContrast = function() {
return /** @type {number} */ this.get(ol.LayerProperty.CONTRAST);
};
goog.exportProperty(
ol.Layer.prototype,
'getContrast',
ol.Layer.prototype.getContrast);
/**
* @return {number} Hue.
*/
ol.Layer.prototype.getHue = function() {
return /** @type {number} */ this.get(ol.LayerProperty.HUE);
};
goog.exportProperty(
ol.Layer.prototype,
'getHue',
ol.Layer.prototype.getHue);
/**
* @return {number} Opacity.
*/
ol.Layer.prototype.getOpacity = function() {
return /** @type {number} */ this.get(ol.LayerProperty.OPACITY);
};
goog.exportProperty(
ol.Layer.prototype,
'getOpacity',
ol.Layer.prototype.getOpacity);
/**
* @return {number} Saturation.
*/
ol.Layer.prototype.getSaturation = function() {
return /** @type {number} */ this.get(ol.LayerProperty.SATURATION);
};
goog.exportProperty(
ol.Layer.prototype,
'getSaturation',
ol.Layer.prototype.getSaturation);
/**
* @return {ol.Store} Store.
*/
ol.Layer.prototype.getStore = function() {
return this.store_;
};
/**
* @return {boolean} Visible.
*/
ol.Layer.prototype.getVisible = function() {
return /** @type {boolean} */ this.get(ol.LayerProperty.VISIBLE);
};
goog.exportProperty(
ol.Layer.prototype,
'getVisible',
ol.Layer.prototype.getVisible);
/**
* @return {boolean} Is ready.
*/
ol.Layer.prototype.isReady = function() {
return this.getStore().isReady();
};
/**
* @param {number} brightness Brightness.
*/
ol.Layer.prototype.setBrightness = function(brightness) {
brightness = goog.math.clamp(brightness, -1, 1);
if (brightness != this.getBrightness()) {
this.set(ol.LayerProperty.BRIGHTNESS, brightness);
}
};
goog.exportProperty(
ol.Layer.prototype,
'setBrightness',
ol.Layer.prototype.setBrightness);
/**
* @param {number} contrast Contrast.
*/
ol.Layer.prototype.setContrast = function(contrast) {
contrast = goog.math.clamp(contrast, -1, 1);
if (contrast != this.getContrast()) {
this.set(ol.LayerProperty.CONTRAST, contrast);
}
};
goog.exportProperty(
ol.Layer.prototype,
'setContrast',
ol.Layer.prototype.setContrast);
/**
* @param {number} hue Hue.
*/
ol.Layer.prototype.setHue = function(hue) {
if (hue != this.getHue()) {
this.set(ol.LayerProperty.HUE, hue);
}
};
goog.exportProperty(
ol.Layer.prototype,
'setHue',
ol.Layer.prototype.setHue);
/**
* @param {number} opacity Opacity.
*/
ol.Layer.prototype.setOpacity = function(opacity) {
opacity = goog.math.clamp(opacity, 0, 1);
if (opacity != this.getOpacity()) {
this.set(ol.LayerProperty.OPACITY, opacity);
}
};
goog.exportProperty(
ol.Layer.prototype,
'setOpacity',
ol.Layer.prototype.setOpacity);
/**
* @param {number} saturation Saturation.
*/
ol.Layer.prototype.setSaturation = function(saturation) {
saturation = goog.math.clamp(saturation, -1, 1);
if (saturation != this.getSaturation()) {
this.set(ol.LayerProperty.SATURATION, saturation);
}
};
goog.exportProperty(
ol.Layer.prototype,
'setSaturation',
ol.Layer.prototype.setSaturation);
/**
* @param {boolean} visible Visible.
*/
ol.Layer.prototype.setVisible = function(visible) {
visible = !!visible;
if (visible != this.getVisible()) {
this.set(ol.LayerProperty.VISIBLE, visible);
}
};
goog.exportProperty(
ol.Layer.prototype,
'setVisible',
ol.Layer.prototype.setVisible);

View File

@@ -1,20 +1,20 @@
goog.provide('ol3.layer.BingMaps'); goog.provide('ol.layer.BingMaps');
goog.provide('ol3.tilestore.BingMaps'); goog.provide('ol.tilestore.BingMaps');
goog.require('goog.Uri'); goog.require('goog.Uri');
goog.require('goog.events'); goog.require('goog.events');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('goog.net.Jsonp'); goog.require('goog.net.Jsonp');
goog.require('ol3.TileCoverageArea'); goog.require('ol.TileCoverageArea');
goog.require('ol3.TileLayer'); goog.require('ol.TileLayer');
goog.require('ol3.TileStore'); goog.require('ol.TileStore');
goog.require('ol3.tilegrid.XYZ'); goog.require('ol.tilegrid.XYZ');
/** /**
* @enum {string} * @enum {string}
*/ */
ol3.BingMapsStyle = { ol.BingMapsStyle = {
AERIAL: 'Aerial', AERIAL: 'Aerial',
AERIAL_WITH_LABELS: 'AerialWithLabels', AERIAL_WITH_LABELS: 'AerialWithLabels',
ROAD: 'Road', ROAD: 'Road',
@@ -26,33 +26,33 @@ ol3.BingMapsStyle = {
/** /**
* @constructor * @constructor
* @extends {ol3.TileLayer} * @extends {ol.TileLayer}
* @param {ol3.BingMapsStyle} style Bing Maps style. * @param {ol.BingMapsStyle} style Bing Maps style.
* @param {string} key Key. * @param {string} key Key.
* @param {string=} opt_culture Culture. * @param {string=} opt_culture Culture.
* @param {Object.<string, *>=} opt_values Values. * @param {Object.<string, *>=} opt_values Values.
*/ */
ol3.layer.BingMaps = function(style, key, opt_culture, opt_values) { ol.layer.BingMaps = function(style, key, opt_culture, opt_values) {
var tileStore = new ol3.tilestore.BingMaps(style, key, opt_culture, var tileStore = new ol.tilestore.BingMaps(style, key, opt_culture,
function(tileStore) { function(tileStore) {
this.dispatchEvent(goog.events.EventType.LOAD); this.dispatchEvent(goog.events.EventType.LOAD);
}, this); }, this);
goog.base(this, tileStore, opt_values); goog.base(this, tileStore, opt_values);
}; };
goog.inherits(ol3.layer.BingMaps, ol3.TileLayer); goog.inherits(ol.layer.BingMaps, ol.TileLayer);
/** /**
* @constructor * @constructor
* @extends {ol3.TileStore} * @extends {ol.TileStore}
* @param {ol3.BingMapsStyle} style Bing Maps style. * @param {ol.BingMapsStyle} style Bing Maps style.
* @param {string} key Key. * @param {string} key Key.
* @param {string=} opt_culture Culture. * @param {string=} opt_culture Culture.
* @param {?function(ol3.tilestore.BingMaps)=} opt_callback Callback. * @param {?function(ol.tilestore.BingMaps)=} opt_callback Callback.
* @param {*=} opt_obj Object. * @param {*=} opt_obj Object.
*/ */
ol3.tilestore.BingMaps = ol.tilestore.BingMaps =
function(style, key, opt_culture, opt_callback, opt_obj) { function(style, key, opt_culture, opt_callback, opt_obj) {
/** /**
@@ -69,7 +69,7 @@ ol3.tilestore.BingMaps =
/** /**
* @private * @private
* @type {?function(ol3.tilestore.BingMaps)} * @type {?function(ol.tilestore.BingMaps)}
*/ */
this.callback_ = opt_callback || null; this.callback_ = opt_callback || null;
@@ -87,20 +87,20 @@ ol3.tilestore.BingMaps =
'key': key 'key': key
}, goog.bind(this.handleImageryMetadataResponse, this)); }, goog.bind(this.handleImageryMetadataResponse, this));
var projection = ol3.Projection.getFromCode('EPSG:3857'); var projection = ol.Projection.getFromCode('EPSG:3857');
var extent = projection.getExtent(); var extent = projection.getExtent();
goog.base( goog.base(
this, projection, null, ol3.TileUrlFunction.nullTileUrlFunction, extent); this, projection, null, ol.TileUrlFunction.nullTileUrlFunction, extent);
}; };
goog.inherits(ol3.tilestore.BingMaps, ol3.TileStore); goog.inherits(ol.tilestore.BingMaps, ol.TileStore);
/** /**
* @param {BingMapsImageryMetadataResponse} response Response. * @param {BingMapsImageryMetadataResponse} response Response.
*/ */
ol3.tilestore.BingMaps.prototype.handleImageryMetadataResponse = ol.tilestore.BingMaps.prototype.handleImageryMetadataResponse =
function(response) { function(response) {
goog.asserts.assert( goog.asserts.assert(
@@ -117,11 +117,11 @@ ol3.tilestore.BingMaps.prototype.handleImageryMetadataResponse =
var zoomMin = resource.zoomMin; var zoomMin = resource.zoomMin;
var zoomMax = resource.zoomMax; var zoomMax = resource.zoomMax;
var tileSize = new ol3.Size(resource.imageWidth, resource.imageHeight); var tileSize = new ol.Size(resource.imageWidth, resource.imageHeight);
var tileGrid = new ol3.tilegrid.XYZ(zoomMax, tileSize); var tileGrid = new ol.tilegrid.XYZ(zoomMax, tileSize);
this.tileGrid = tileGrid; this.tileGrid = tileGrid;
this.tileUrlFunction = ol3.TileUrlFunction.withTileCoordTransform( this.tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(
function(tileCoord) { function(tileCoord) {
if (tileCoord.z < zoomMin || zoomMax < tileCoord.z) { if (tileCoord.z < zoomMin || zoomMax < tileCoord.z) {
return null; return null;
@@ -132,10 +132,10 @@ ol3.tilestore.BingMaps.prototype.handleImageryMetadataResponse =
return null; return null;
} else { } else {
var x = goog.math.modulo(tileCoord.x, n); var x = goog.math.modulo(tileCoord.x, n);
return new ol3.TileCoord(tileCoord.z, x, y); return new ol.TileCoord(tileCoord.z, x, y);
} }
}, },
ol3.TileUrlFunction.createFromTileUrlFunctions( ol.TileUrlFunction.createFromTileUrlFunctions(
goog.array.map( goog.array.map(
resource.imageUrlSubdomains, resource.imageUrlSubdomains,
function(subdomain) { function(subdomain) {
@@ -152,7 +152,7 @@ ol3.tilestore.BingMaps.prototype.handleImageryMetadataResponse =
}; };
}))); })));
var projection = ol3.Projection.getFromCode('EPSG:4326'); var projection = ol.Projection.getFromCode('EPSG:4326');
var attributions = goog.array.map( var attributions = goog.array.map(
resource.imageryProviders, resource.imageryProviders,
function(imageryProvider) { function(imageryProvider) {
@@ -161,12 +161,12 @@ ol3.tilestore.BingMaps.prototype.handleImageryMetadataResponse =
imageryProvider.coverageAreas, imageryProvider.coverageAreas,
function(coverageArea) { function(coverageArea) {
var bbox = coverageArea.bbox; var bbox = coverageArea.bbox;
var extent = new ol3.Extent(bbox[1], bbox[0], bbox[3], bbox[2]); var extent = new ol.Extent(bbox[1], bbox[0], bbox[3], bbox[2]);
var minZ = coverageArea.zoomMin; var minZ = coverageArea.zoomMin;
var maxZ = coverageArea.zoomMax; var maxZ = coverageArea.zoomMax;
return new ol3.TileCoverageArea(tileGrid, extent, minZ, maxZ); return new ol.TileCoverageArea(tileGrid, extent, minZ, maxZ);
}); });
return new ol3.Attribution(html, coverageAreas, projection); return new ol.Attribution(html, coverageAreas, projection);
}); });
this.setAttributions(attributions); this.setAttributions(attributions);
@@ -184,6 +184,6 @@ ol3.tilestore.BingMaps.prototype.handleImageryMetadataResponse =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.tilestore.BingMaps.prototype.isReady = function() { ol.tilestore.BingMaps.prototype.isReady = function() {
return this.ready_; return this.ready_;
}; };

View File

@@ -1,28 +1,28 @@
goog.provide('ol3.layer.MapQuestOSM'); goog.provide('ol.layer.MapQuestOSM');
goog.provide('ol3.layer.MapQuestOpenAerial'); goog.provide('ol.layer.MapQuestOpenAerial');
goog.require('ol3.Attribution'); goog.require('ol.Attribution');
goog.require('ol3.TileUrlFunction'); goog.require('ol.TileUrlFunction');
goog.require('ol3.layer.XYZ'); goog.require('ol.layer.XYZ');
/** /**
* @constructor * @constructor
* @extends {ol3.layer.XYZ} * @extends {ol.layer.XYZ}
* @param {Object.<string, *>=} opt_values Values. * @param {Object.<string, *>=} opt_values Values.
*/ */
ol3.layer.MapQuestOSM = function(opt_values) { ol.layer.MapQuestOSM = function(opt_values) {
var tileUrlFunction = ol3.TileUrlFunction.createFromTemplate( var tileUrlFunction = ol.TileUrlFunction.createFromTemplate(
'http://otile{1-4}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg'); 'http://otile{1-4}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg');
var attributions = [ var attributions = [
new ol3.Attribution( new ol.Attribution(
'Tiles Courtesy of ' + 'Tiles Courtesy of ' +
'<a href="http://www.mapquest.com/" target="_blank">MapQuest</a> ' + '<a href="http://www.mapquest.com/" target="_blank">MapQuest</a> ' +
'<img src="http://developer.mapquest.com/content/osm/mq_logo.png">'), '<img src="http://developer.mapquest.com/content/osm/mq_logo.png">'),
new ol3.Attribution( new ol.Attribution(
'Data &copy; ' + 'Data &copy; ' +
'<a href="http://www.openstreetmap.org">OpenStreetMap</a> ' + '<a href="http://www.openstreetmap.org">OpenStreetMap</a> ' +
'contributors, ' + 'contributors, ' +
@@ -32,26 +32,26 @@ ol3.layer.MapQuestOSM = function(opt_values) {
goog.base(this, 18, tileUrlFunction, attributions); goog.base(this, 18, tileUrlFunction, attributions);
}; };
goog.inherits(ol3.layer.MapQuestOSM, ol3.layer.XYZ); goog.inherits(ol.layer.MapQuestOSM, ol.layer.XYZ);
/** /**
* @constructor * @constructor
* @extends {ol3.layer.XYZ} * @extends {ol.layer.XYZ}
* @param {Object.<string, *>=} opt_values Values. * @param {Object.<string, *>=} opt_values Values.
*/ */
ol3.layer.MapQuestOpenAerial = function(opt_values) { ol.layer.MapQuestOpenAerial = function(opt_values) {
var tileUrlFunction = ol3.TileUrlFunction.createFromTemplate( var tileUrlFunction = ol.TileUrlFunction.createFromTemplate(
'http://oatile{1-4}.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.jpg'); 'http://oatile{1-4}.mqcdn.com/tiles/1.0.0/sat/{z}/{x}/{y}.jpg');
var attributions = [ var attributions = [
new ol3.Attribution( new ol.Attribution(
'Tiles Courtesy of ' + 'Tiles Courtesy of ' +
'<a href="http://www.mapquest.com/" target="_blank">MapQuest</a> ' + '<a href="http://www.mapquest.com/" target="_blank">MapQuest</a> ' +
'<img src="http://developer.mapquest.com/content/osm/mq_logo.png">'), '<img src="http://developer.mapquest.com/content/osm/mq_logo.png">'),
new ol3.Attribution( new ol.Attribution(
'Portions Courtesy NASA/JPL-Caltech and ' + 'Portions Courtesy NASA/JPL-Caltech and ' +
'U.S. Depart. of Agriculture, Farm Service Agency') 'U.S. Depart. of Agriculture, Farm Service Agency')
]; ];
@@ -59,4 +59,4 @@ ol3.layer.MapQuestOpenAerial = function(opt_values) {
goog.base(this, 18, tileUrlFunction, attributions); goog.base(this, 18, tileUrlFunction, attributions);
}; };
goog.inherits(ol3.layer.MapQuestOpenAerial, ol3.layer.XYZ); goog.inherits(ol.layer.MapQuestOpenAerial, ol.layer.XYZ);

View File

@@ -0,0 +1,40 @@
goog.provide('ol.layer.OpenStreetMap');
goog.provide('ol.store.OpenStreetMap');
goog.require('ol.TileLayer');
goog.require('ol.TileUrlFunction');
goog.require('ol.tilestore.XYZ');
/**
* @constructor
* @extends {ol.TileLayer}
* @param {Object.<string, *>=} opt_values Values.
*/
ol.layer.OpenStreetMap = function(opt_values) {
var tileStore = new ol.store.OpenStreetMap();
goog.base(this, tileStore, opt_values);
};
goog.inherits(ol.layer.OpenStreetMap, ol.TileLayer);
/**
* @constructor
* @extends {ol.tilestore.XYZ}
*/
ol.store.OpenStreetMap = function() {
var tileUrlFunction = ol.TileUrlFunction.createFromTemplate(
'http://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png');
var attribution = new ol.Attribution(
'&copy; <a href="http://www.openstreetmap.org">OpenStreetMap</a> ' +
'contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA</a>');
goog.base(this, 18, tileUrlFunction, [attribution]);
};
goog.inherits(ol.store.OpenStreetMap, ol.tilestore.XYZ);

View File

@@ -1,16 +1,16 @@
// FIXME Configure minZoom when supported by TileGrid // FIXME Configure minZoom when supported by TileGrid
goog.provide('ol3.layer.Stamen'); goog.provide('ol.layer.Stamen');
goog.provide('ol3.store.Stamen'); goog.provide('ol.store.Stamen');
goog.require('ol3.TileUrlFunction'); goog.require('ol.TileUrlFunction');
goog.require('ol3.layer.XYZ'); goog.require('ol.layer.XYZ');
/** /**
* @enum {string} * @enum {string}
*/ */
ol3.StamenProvider = { ol.StamenProvider = {
TERRAIN: 'terrain', TERRAIN: 'terrain',
TONER: 'toner', TONER: 'toner',
WATERCOLOR: 'watercolor' WATERCOLOR: 'watercolor'
@@ -20,7 +20,7 @@ ol3.StamenProvider = {
/** /**
* @enum {string} * @enum {string}
*/ */
ol3.StamenFlavor = { ol.StamenFlavor = {
TERRAIN_BACKGROUND: 'background', TERRAIN_BACKGROUND: 'background',
TERRAIN_LABELS: 'labels', TERRAIN_LABELS: 'labels',
TERRAIN_LINES: 'lines', TERRAIN_LINES: 'lines',
@@ -38,21 +38,21 @@ ol3.StamenFlavor = {
/** /**
* @type {Object.<ol3.StamenProvider, * @type {Object.<ol.StamenProvider,
* {type: string, minZoom: number, maxZoom: number}>} * {type: string, minZoom: number, maxZoom: number}>}
*/ */
ol3.StamenProviderConfig = {}; ol.StamenProviderConfig = {};
ol3.StamenProviderConfig[ol3.StamenProvider.TERRAIN] = { ol.StamenProviderConfig[ol.StamenProvider.TERRAIN] = {
type: 'jpg', type: 'jpg',
minZoom: 4, minZoom: 4,
maxZoom: 18 maxZoom: 18
}; };
ol3.StamenProviderConfig[ol3.StamenProvider.TONER] = { ol.StamenProviderConfig[ol.StamenProvider.TONER] = {
type: 'png', type: 'png',
minZoom: 0, minZoom: 0,
maxZoom: 20 maxZoom: 20
}; };
ol3.StamenProviderConfig[ol3.StamenProvider.WATERCOLOR] = { ol.StamenProviderConfig[ol.StamenProvider.WATERCOLOR] = {
type: 'jpg', type: 'jpg',
minZoom: 3, minZoom: 3,
maxZoom: 16 maxZoom: 16
@@ -62,23 +62,23 @@ ol3.StamenProviderConfig[ol3.StamenProvider.WATERCOLOR] = {
/** /**
* @constructor * @constructor
* @extends {ol3.layer.XYZ} * @extends {ol.layer.XYZ}
* @param {ol3.StamenProvider} provider Provider. * @param {ol.StamenProvider} provider Provider.
* @param {ol3.StamenFlavor=} opt_flavor Flavor. * @param {ol.StamenFlavor=} opt_flavor Flavor.
* @param {Object.<string, *>=} opt_values Values. * @param {Object.<string, *>=} opt_values Values.
*/ */
ol3.layer.Stamen = function(provider, opt_flavor, opt_values) { ol.layer.Stamen = function(provider, opt_flavor, opt_values) {
var config = ol3.StamenProviderConfig[provider]; var config = ol.StamenProviderConfig[provider];
var layer = provider; var layer = provider;
if (goog.isDef(opt_flavor)) { if (goog.isDef(opt_flavor)) {
layer += '-' + opt_flavor; layer += '-' + opt_flavor;
} }
var tileUrlFunction = ol3.TileUrlFunction.createFromTemplate( var tileUrlFunction = ol.TileUrlFunction.createFromTemplate(
'http://{a-d}.tile.stamen.com/' + layer + '/{z}/{x}/{y}.' + config.type); 'http://{a-d}.tile.stamen.com/' + layer + '/{z}/{x}/{y}.' + config.type);
var attribution = new ol3.Attribution( var attribution = new ol.Attribution(
'Map tiles by <a href="http://stamen.com">Stamen Design</a>, ' + 'Map tiles by <a href="http://stamen.com">Stamen Design</a>, ' +
'under ' + 'under ' +
'<a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>. ' + '<a href="http://creativecommons.org/licenses/by/3.0">CC BY 3.0</a>. ' +
@@ -89,4 +89,4 @@ ol3.layer.Stamen = function(provider, opt_flavor, opt_values) {
goog.base(this, config.maxZoom, tileUrlFunction, [attribution]); goog.base(this, config.maxZoom, tileUrlFunction, [attribution]);
}; };
goog.inherits(ol3.layer.Stamen, ol3.layer.XYZ); goog.inherits(ol.layer.Stamen, ol.layer.XYZ);

View File

@@ -1,36 +1,36 @@
// FIXME add some error checking // FIXME add some error checking
// FIXME check order of async callbacks // FIXME check order of async callbacks
// FIXME use minzoom when supported by ol3.TileGrid // FIXME use minzoom when supported by ol.TileGrid
/** /**
* @see http://mapbox.com/developers/api/ * @see http://mapbox.com/developers/api/
*/ */
goog.provide('ol3.layer.TileJSON'); goog.provide('ol.layer.TileJSON');
goog.provide('ol3.tilejson'); goog.provide('ol.tilejson');
goog.provide('ol3.tilestore.TileJSON'); goog.provide('ol.tilestore.TileJSON');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('goog.net.jsloader'); goog.require('goog.net.jsloader');
goog.require('goog.string'); goog.require('goog.string');
goog.require('ol3.TileLayer'); goog.require('ol.TileLayer');
goog.require('ol3.TileStore'); goog.require('ol.TileStore');
goog.require('ol3.TileUrlFunction'); goog.require('ol.TileUrlFunction');
/** /**
* @private * @private
* @type {Array.<TileJSON>} * @type {Array.<TileJSON>}
*/ */
ol3.tilejson.grids_ = []; ol.tilejson.grids_ = [];
/** /**
* @param {TileJSON} tileJSON Tile JSON. * @param {TileJSON} tileJSON Tile JSON.
*/ */
var grid = function(tileJSON) { var grid = function(tileJSON) {
ol3.tilejson.grids_.push(tileJSON); ol.tilejson.grids_.push(tileJSON);
}; };
goog.exportSymbol('grid', grid); goog.exportSymbol('grid', grid);
@@ -38,38 +38,38 @@ goog.exportSymbol('grid', grid);
/** /**
* @constructor * @constructor
* @extends {ol3.TileLayer} * @extends {ol.TileLayer}
* @param {string} url URL. * @param {string} url URL.
* @param {Object.<string, *>=} opt_values Values. * @param {Object.<string, *>=} opt_values Values.
*/ */
ol3.layer.TileJSON = function(url, opt_values) { ol.layer.TileJSON = function(url, opt_values) {
goog.asserts.assert(goog.string.endsWith(url, '.jsonp')); goog.asserts.assert(goog.string.endsWith(url, '.jsonp'));
var tileStore = new ol3.tilestore.TileJSON(url, function(tileStore) { var tileStore = new ol.tilestore.TileJSON(url, function(tileStore) {
this.dispatchEvent(goog.events.EventType.LOAD); this.dispatchEvent(goog.events.EventType.LOAD);
}, this); }, this);
goog.base(this, tileStore, opt_values); goog.base(this, tileStore, opt_values);
}; };
goog.inherits(ol3.layer.TileJSON, ol3.TileLayer); goog.inherits(ol.layer.TileJSON, ol.TileLayer);
/** /**
* @constructor * @constructor
* @extends {ol3.TileStore} * @extends {ol.TileStore}
* @param {string} uri URI. * @param {string} uri URI.
* @param {?function(ol3.tilestore.TileJSON)=} opt_callback Callback. * @param {?function(ol.tilestore.TileJSON)=} opt_callback Callback.
* @param {*=} opt_obj Object. * @param {*=} opt_obj Object.
*/ */
ol3.tilestore.TileJSON = function(uri, opt_callback, opt_obj) { ol.tilestore.TileJSON = function(uri, opt_callback, opt_obj) {
var projection = ol3.Projection.getFromCode('EPSG:3857'); var projection = ol.Projection.getFromCode('EPSG:3857');
goog.base( goog.base(
this, projection, null, ol3.TileUrlFunction.nullTileUrlFunction, null); this, projection, null, ol.TileUrlFunction.nullTileUrlFunction, null);
/** /**
* @private * @private
* @type {?function(ol3.tilestore.TileJSON)} * @type {?function(ol.tilestore.TileJSON)}
*/ */
this.callback_ = opt_callback || null; this.callback_ = opt_callback || null;
@@ -93,25 +93,25 @@ ol3.tilestore.TileJSON = function(uri, opt_callback, opt_obj) {
this.deferred_.addCallback(this.handleTileJSONResponse, this); this.deferred_.addCallback(this.handleTileJSONResponse, this);
}; };
goog.inherits(ol3.tilestore.TileJSON, ol3.TileStore); goog.inherits(ol.tilestore.TileJSON, ol.TileStore);
/** /**
* @protected * @protected
*/ */
ol3.tilestore.TileJSON.prototype.handleTileJSONResponse = function() { ol.tilestore.TileJSON.prototype.handleTileJSONResponse = function() {
var tileJSON = ol3.tilejson.grids_.pop(); var tileJSON = ol.tilejson.grids_.pop();
var epsg4326Projection = ol3.Projection.getFromCode('EPSG:4326'); var epsg4326Projection = ol.Projection.getFromCode('EPSG:4326');
var epsg4326Extent, extent; var epsg4326Extent, extent;
if (goog.isDef(tileJSON.bounds)) { if (goog.isDef(tileJSON.bounds)) {
var bounds = tileJSON.bounds; var bounds = tileJSON.bounds;
epsg4326Extent = new ol3.Extent( epsg4326Extent = new ol.Extent(
bounds[0], bounds[1], bounds[2], bounds[3]); bounds[0], bounds[1], bounds[2], bounds[3]);
extent = epsg4326Extent.transform( extent = epsg4326Extent.transform(
ol3.Projection.getTransform(epsg4326Projection, this.getProjection())); ol.Projection.getTransform(epsg4326Projection, this.getProjection()));
this.setExtent(extent); this.setExtent(extent);
} else { } else {
epsg4326Extent = null; epsg4326Extent = null;
@@ -125,10 +125,10 @@ ol3.tilestore.TileJSON.prototype.handleTileJSONResponse = function() {
var minzoom = tileJSON.minzoom || 0; var minzoom = tileJSON.minzoom || 0;
goog.asserts.assert(minzoom === 0); // FIXME goog.asserts.assert(minzoom === 0); // FIXME
var maxzoom = tileJSON.maxzoom || 22; var maxzoom = tileJSON.maxzoom || 22;
var tileGrid = new ol3.tilegrid.XYZ(maxzoom); var tileGrid = new ol.tilegrid.XYZ(maxzoom);
this.tileGrid = tileGrid; this.tileGrid = tileGrid;
this.tileUrlFunction = ol3.TileUrlFunction.withTileCoordTransform( this.tileUrlFunction = ol.TileUrlFunction.withTileCoordTransform(
function(tileCoord) { function(tileCoord) {
if (tileCoord.z < minzoom || maxzoom < tileCoord.z) { if (tileCoord.z < minzoom || maxzoom < tileCoord.z) {
return null; return null;
@@ -141,22 +141,22 @@ ol3.tilestore.TileJSON.prototype.handleTileJSONResponse = function() {
var x = goog.math.modulo(tileCoord.x, n); var x = goog.math.modulo(tileCoord.x, n);
if (!goog.isNull(extent)) { if (!goog.isNull(extent)) {
var tileExtent = tileGrid.getTileCoordExtent( var tileExtent = tileGrid.getTileCoordExtent(
new ol3.TileCoord(tileCoord.z, x, tileCoord.y)); new ol.TileCoord(tileCoord.z, x, tileCoord.y));
if (!tileExtent.intersects(extent)) { if (!tileExtent.intersects(extent)) {
return null; return null;
} }
} }
return new ol3.TileCoord(tileCoord.z, x, y); return new ol.TileCoord(tileCoord.z, x, y);
}, },
ol3.TileUrlFunction.createFromTemplates(tileJSON.tiles)); ol.TileUrlFunction.createFromTemplates(tileJSON.tiles));
if (goog.isDef(tileJSON.attribution)) { if (goog.isDef(tileJSON.attribution)) {
var coverageAreas = [ var coverageAreas = [
new ol3.TileCoverageArea(tileGrid, epsg4326Extent, minzoom, maxzoom) new ol.TileCoverageArea(tileGrid, epsg4326Extent, minzoom, maxzoom)
]; ];
var coverageAreaProjection = epsg4326Projection; var coverageAreaProjection = epsg4326Projection;
this.setAttributions([ this.setAttributions([
new ol3.Attribution( new ol.Attribution(
tileJSON.attribution, coverageAreas, coverageAreaProjection) tileJSON.attribution, coverageAreas, coverageAreaProjection)
]); ]);
} }
@@ -175,6 +175,6 @@ ol3.tilestore.TileJSON.prototype.handleTileJSONResponse = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.tilestore.TileJSON.prototype.isReady = function() { ol.tilestore.TileJSON.prototype.isReady = function() {
return this.ready_; return this.ready_;
}; };

118
src/ol/layer/xyz.js Normal file
View File

@@ -0,0 +1,118 @@
goog.provide('ol.layer.XYZ');
goog.provide('ol.tilegrid.XYZ');
goog.provide('ol.tilestore.XYZ');
goog.require('goog.math');
goog.require('ol.Attribution');
goog.require('ol.Coordinate');
goog.require('ol.Layer');
goog.require('ol.Projection');
goog.require('ol.Size');
goog.require('ol.TileCoord');
goog.require('ol.TileGrid');
goog.require('ol.TileLayer');
goog.require('ol.TileStore');
goog.require('ol.TileUrlFunction');
/**
* @constructor
* @extends {ol.TileGrid}
* @param {number} maxZoom Maximum zoom.
* @param {ol.Size=} opt_tileSize Tile size.
*/
ol.tilegrid.XYZ = function(maxZoom, opt_tileSize) {
var resolutions = new Array(maxZoom + 1);
var z;
for (z = 0; z <= maxZoom; ++z) {
resolutions[z] = ol.Projection.EPSG_3857_HALF_SIZE / (128 << z);
}
var extent = ol.Projection.EPSG_3857_EXTENT;
var origin = new ol.Coordinate(
-ol.Projection.EPSG_3857_HALF_SIZE, ol.Projection.EPSG_3857_HALF_SIZE);
goog.base(this, resolutions, extent, origin, opt_tileSize);
};
goog.inherits(ol.tilegrid.XYZ, ol.TileGrid);
/**
* @inheritDoc
*/
ol.tilegrid.XYZ.prototype.forEachTileCoordParentTileBounds =
function(tileCoord, callback, opt_obj) {
var x = tileCoord.x;
var y = tileCoord.y;
var z = tileCoord.z;
var tileBounds;
while (true) {
z -= 1;
if (z < 0) {
break;
}
x = Math.floor(x / 2);
y = Math.floor(y / 2);
tileBounds = new ol.TileBounds(x, y, x, y);
if (callback.call(opt_obj, z, tileBounds)) {
break;
}
}
};
/**
* @constructor
* @extends {ol.TileLayer}
* @param {number} maxZoom Maximum zoom.
* @param {ol.TileUrlFunctionType} tileUrlFunction Tile URL function.
* @param {Array.<ol.Attribution>=} opt_attributions Attributions.
* @param {string=} opt_crossOrigin Cross origin.
* @param {Object.<string, *>=} opt_values Values.
*/
ol.layer.XYZ = function(
maxZoom, tileUrlFunction, opt_attributions, opt_crossOrigin, opt_values) {
var tileStore = new ol.tilestore.XYZ(
maxZoom, tileUrlFunction, opt_attributions, opt_crossOrigin);
goog.base(this, tileStore, opt_values);
};
goog.inherits(ol.layer.XYZ, ol.TileLayer);
/**
* @constructor
* @extends {ol.TileStore}
* @param {number} maxZoom Maximum zoom.
* @param {ol.TileUrlFunctionType} tileUrlFunction Tile URL function.
* @param {Array.<ol.Attribution>=} opt_attributions Attributions.
* @param {string=} opt_crossOrigin Cross origin.
*/
ol.tilestore.XYZ =
function(maxZoom, tileUrlFunction, opt_attributions, opt_crossOrigin) {
var projection = ol.Projection.getFromCode('EPSG:3857');
var tileGrid = new ol.tilegrid.XYZ(maxZoom);
var tileUrlFunction2 = ol.TileUrlFunction.withTileCoordTransform(
function(tileCoord) {
var n = 1 << tileCoord.z;
var y = -tileCoord.y - 1;
if (y < 0 || n <= y) {
return null;
} else {
var x = goog.math.modulo(tileCoord.x, n);
return new ol.TileCoord(tileCoord.z, x, y);
}
},
tileUrlFunction);
var extent = projection.getExtent();
goog.base(this, projection, tileGrid, tileUrlFunction2, extent,
opt_attributions, opt_crossOrigin);
};
goog.inherits(ol.tilestore.XYZ, ol.TileStore);

View File

@@ -1,17 +1,17 @@
goog.require('goog.testing.jsunit'); goog.require('goog.testing.jsunit');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.TileCoord'); goog.require('ol.TileCoord');
goog.require('ol3.TileUrlFunction'); goog.require('ol.TileUrlFunction');
goog.require('ol3.tilestore.XYZ'); goog.require('ol.tilestore.XYZ');
function testXYZ() { function testXYZ() {
var xyzTileStore = new ol3.tilestore.XYZ( var xyzTileStore = new ol.tilestore.XYZ(
6, ol3.TileUrlFunction.createFromTemplate('{z}/{x}/{y}')); 6, ol.TileUrlFunction.createFromTemplate('{z}/{x}/{y}'));
var tileGrid = xyzTileStore.getTileGrid(); var tileGrid = xyzTileStore.getTileGrid();
var coordinate = new ol3.Coordinate(829330.2064098881, 5933916.615134273); var coordinate = new ol.Coordinate(829330.2064098881, 5933916.615134273);
var tileUrl; var tileUrl;
tileUrl = xyzTileStore.getTileCoordUrl( tileUrl = xyzTileStore.getTileCoordUrl(
@@ -47,16 +47,16 @@ function testXYZ() {
function testXYZWrapX() { function testXYZWrapX() {
var xyzTileStore = new ol3.tilestore.XYZ( var xyzTileStore = new ol.tilestore.XYZ(
6, ol3.TileUrlFunction.createFromTemplate('{z}/{x}/{y}')); 6, ol.TileUrlFunction.createFromTemplate('{z}/{x}/{y}'));
tileUrl = xyzTileStore.getTileCoordUrl(new ol3.TileCoord(6, -31, -23)); tileUrl = xyzTileStore.getTileCoordUrl(new ol.TileCoord(6, -31, -23));
assertEquals('6/33/22', tileUrl); assertEquals('6/33/22', tileUrl);
tileUrl = xyzTileStore.getTileCoordUrl(new ol3.TileCoord(6, 33, -23)); tileUrl = xyzTileStore.getTileCoordUrl(new ol.TileCoord(6, 33, -23));
assertEquals('6/33/22', tileUrl); assertEquals('6/33/22', tileUrl);
tileUrl = xyzTileStore.getTileCoordUrl(new ol3.TileCoord(6, 97, -23)); tileUrl = xyzTileStore.getTileCoordUrl(new ol.TileCoord(6, 97, -23));
assertEquals('6/33/22', tileUrl); assertEquals('6/33/22', tileUrl);
} }
@@ -64,16 +64,16 @@ function testXYZWrapX() {
function testXYZCropY() { function testXYZCropY() {
var xyzTileStore = new ol3.tilestore.XYZ( var xyzTileStore = new ol.tilestore.XYZ(
6, ol3.TileUrlFunction.createFromTemplate('{z}/{x}/{y}')); 6, ol.TileUrlFunction.createFromTemplate('{z}/{x}/{y}'));
tileUrl = xyzTileStore.getTileCoordUrl(new ol3.TileCoord(6, 33, -87)); tileUrl = xyzTileStore.getTileCoordUrl(new ol.TileCoord(6, 33, -87));
assertUndefined(tileUrl); assertUndefined(tileUrl);
tileUrl = xyzTileStore.getTileCoordUrl(new ol3.TileCoord(6, 33, -23)); tileUrl = xyzTileStore.getTileCoordUrl(new ol.TileCoord(6, 33, -23));
assertEquals('6/33/22', tileUrl); assertEquals('6/33/22', tileUrl);
tileUrl = xyzTileStore.getTileCoordUrl(new ol3.TileCoord(6, 33, 41)); tileUrl = xyzTileStore.getTileCoordUrl(new ol.TileCoord(6, 33, 41));
assertUndefined(tileUrl); assertUndefined(tileUrl);
} }
@@ -81,9 +81,9 @@ function testXYZCropY() {
function testXYZTileGridForEachTileCoordParentTileBounds() { function testXYZTileGridForEachTileCoordParentTileBounds() {
var xyzTileGrid = new ol3.tilegrid.XYZ(6); var xyzTileGrid = new ol.tilegrid.XYZ(6);
var tileCoord = new ol3.TileCoord(5, 11, 21); var tileCoord = new ol.TileCoord(5, 11, 21);
var zs = [], tileBoundss = []; var zs = [], tileBoundss = [];
xyzTileGrid.forEachTileCoordParentTileBounds( xyzTileGrid.forEachTileCoordParentTileBounds(
tileCoord, tileCoord,

View File

@@ -3,9 +3,9 @@
// FIXME layer renderers should skip when they can't reproject // FIXME layer renderers should skip when they can't reproject
// FIXME add tilt and height? // FIXME add tilt and height?
goog.provide('ol3.Map'); goog.provide('ol.Map');
goog.provide('ol3.MapEventType'); goog.provide('ol.MapEventType');
goog.provide('ol3.MapProperty'); goog.provide('ol.MapProperty');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.debug.Logger'); goog.require('goog.debug.Logger');
@@ -27,24 +27,24 @@ goog.require('goog.fx.Dragger');
goog.require('goog.fx.anim'); goog.require('goog.fx.anim');
goog.require('goog.fx.anim.Animated'); goog.require('goog.fx.anim.Animated');
goog.require('goog.object'); goog.require('goog.object');
goog.require('ol3.Collection'); goog.require('ol.Collection');
goog.require('ol3.Color'); goog.require('ol.Color');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.Extent'); goog.require('ol.Extent');
goog.require('ol3.Interaction'); goog.require('ol.Interaction');
goog.require('ol3.MapBrowserEvent'); goog.require('ol.MapBrowserEvent');
goog.require('ol3.Object'); goog.require('ol.Object');
goog.require('ol3.Pixel'); goog.require('ol.Pixel');
goog.require('ol3.Projection'); goog.require('ol.Projection');
goog.require('ol3.Size'); goog.require('ol.Size');
goog.require('ol3.TransformFunction'); goog.require('ol.TransformFunction');
goog.require('ol3.renderer.Layer'); goog.require('ol.renderer.Layer');
/** /**
* @enum {string} * @enum {string}
*/ */
ol3.MapEventType = { ol.MapEventType = {
POST_RENDER: 'postrender' POST_RENDER: 'postrender'
}; };
@@ -52,7 +52,7 @@ ol3.MapEventType = {
/** /**
* @enum {string} * @enum {string}
*/ */
ol3.MapProperty = { ol.MapProperty = {
BACKGROUND_COLOR: 'backgroundColor', BACKGROUND_COLOR: 'backgroundColor',
CENTER: 'center', CENTER: 'center',
INTERACTIONS: 'interactions', INTERACTIONS: 'interactions',
@@ -68,7 +68,7 @@ ol3.MapProperty = {
/** /**
* @enum {number} * @enum {number}
*/ */
ol3.MapPaneZIndex = { ol.MapPaneZIndex = {
VIEWPORT: 1000 VIEWPORT: 1000
}; };
@@ -76,16 +76,16 @@ ol3.MapPaneZIndex = {
/** /**
* @constructor * @constructor
* @extends {ol3.Object} * @extends {ol.Object}
* @implements {goog.fx.anim.Animated} * @implements {goog.fx.anim.Animated}
* @param {Element} container Container. * @param {Element} container Container.
* @param {function(new: ol3.renderer.Map, Element, ol3.Map)} rendererConstructor * @param {function(new: ol.renderer.Map, Element, ol.Map)} rendererConstructor
* Renderer constructor. * Renderer constructor.
* @param {Object=} opt_values Values. * @param {Object=} opt_values Values.
* @param {goog.dom.ViewportSizeMonitor=} opt_viewportSizeMonitor * @param {goog.dom.ViewportSizeMonitor=} opt_viewportSizeMonitor
* Viewport size monitor. * Viewport size monitor.
*/ */
ol3.Map = function( ol.Map = function(
container, rendererConstructor, opt_values, opt_viewportSizeMonitor) { container, rendererConstructor, opt_values, opt_viewportSizeMonitor) {
goog.base(this); goog.base(this);
@@ -95,20 +95,20 @@ ol3.Map = function(
* @protected * @protected
* @type {goog.debug.Logger} * @type {goog.debug.Logger}
*/ */
this.logger = goog.debug.Logger.getLogger('ol3.map.' + goog.getUid(this)); this.logger = goog.debug.Logger.getLogger('ol.map.' + goog.getUid(this));
} }
/** /**
* @type {ol3.TransformFunction} * @type {ol.TransformFunction}
* @private * @private
*/ */
this.userToMapTransform_ = ol3.Projection.identityTransform; this.userToMapTransform_ = ol.Projection.identityTransform;
/** /**
* @type {ol3.TransformFunction} * @type {ol.TransformFunction}
* @private * @private
*/ */
this.mapToUserTransform_ = ol3.Projection.cloneTransform; this.mapToUserTransform_ = ol.Projection.cloneTransform;
/** /**
* @private * @private
@@ -150,7 +150,7 @@ ol3.Map = function(
this.viewport_.style.overflow = 'hidden'; this.viewport_.style.overflow = 'hidden';
this.viewport_.style.width = '100%'; this.viewport_.style.width = '100%';
this.viewport_.style.height = '100%'; this.viewport_.style.height = '100%';
this.viewport_.style.zIndex = ol3.MapPaneZIndex.VIEWPORT; this.viewport_.style.zIndex = ol.MapPaneZIndex.VIEWPORT;
goog.dom.appendChild(container, this.viewport_); goog.dom.appendChild(container, this.viewport_);
goog.events.listen(this.viewport_, [ goog.events.listen(this.viewport_, [
@@ -179,7 +179,7 @@ ol3.Map = function(
this.registerDisposable(dragger); this.registerDisposable(dragger);
/** /**
* @type {ol3.renderer.Map} * @type {ol.renderer.Map}
* @private * @private
*/ */
this.renderer_ = new rendererConstructor(this.viewport_, this); this.renderer_ = new rendererConstructor(this.viewport_, this);
@@ -196,11 +196,11 @@ ol3.Map = function(
this.handleBrowserWindowResize, false, this); this.handleBrowserWindowResize, false, this);
goog.events.listen( goog.events.listen(
this, ol3.Object.getChangedEventType(ol3.MapProperty.PROJECTION), this, ol.Object.getChangedEventType(ol.MapProperty.PROJECTION),
this.handleProjectionChanged, false, this); this.handleProjectionChanged, false, this);
goog.events.listen( goog.events.listen(
this, ol3.Object.getChangedEventType(ol3.MapProperty.USER_PROJECTION), this, ol.Object.getChangedEventType(ol.MapProperty.USER_PROJECTION),
this.handleUserProjectionChanged, false, this); this.handleUserProjectionChanged, false, this);
if (goog.isDef(opt_values)) { if (goog.isDef(opt_values)) {
@@ -210,21 +210,21 @@ ol3.Map = function(
this.handleBrowserWindowResize(); this.handleBrowserWindowResize();
}; };
goog.inherits(ol3.Map, ol3.Object); goog.inherits(ol.Map, ol.Object);
/** /**
* @return {boolean} Can rotate. * @return {boolean} Can rotate.
*/ */
ol3.Map.prototype.canRotate = function() { ol.Map.prototype.canRotate = function() {
return this.renderer_.canRotate(); return this.renderer_.canRotate();
}; };
/** /**
* @param {ol3.Extent} extent Extent. * @param {ol.Extent} extent Extent.
*/ */
ol3.Map.prototype.fitExtent = function(extent) { ol.Map.prototype.fitExtent = function(extent) {
this.withFrozenRendering(function() { this.withFrozenRendering(function() {
this.setCenter(extent.getCenter()); this.setCenter(extent.getCenter());
this.setResolution(this.getResolutionForExtent(extent)); this.setResolution(this.getResolutionForExtent(extent));
@@ -236,9 +236,9 @@ ol3.Map.prototype.fitExtent = function(extent) {
/** /**
* @param {ol3.Extent} userExtent Extent in user projection. * @param {ol.Extent} userExtent Extent in user projection.
*/ */
ol3.Map.prototype.fitUserExtent = function(userExtent) { ol.Map.prototype.fitUserExtent = function(userExtent) {
this.fitExtent(userExtent.transform(this.userToMapTransform_)); this.fitExtent(userExtent.transform(this.userToMapTransform_));
}; };
@@ -246,49 +246,49 @@ ol3.Map.prototype.fitUserExtent = function(userExtent) {
/** /**
* Freeze rendering. * Freeze rendering.
*/ */
ol3.Map.prototype.freezeRendering = function() { ol.Map.prototype.freezeRendering = function() {
++this.freezeRenderingCount_; ++this.freezeRenderingCount_;
}; };
/** /**
* @return {ol3.Color|undefined} Background color. * @return {ol.Color|undefined} Background color.
*/ */
ol3.Map.prototype.getBackgroundColor = function() { ol.Map.prototype.getBackgroundColor = function() {
return /** @type {ol3.Color|undefined} */ ( return /** @type {ol.Color|undefined} */ (
this.get(ol3.MapProperty.BACKGROUND_COLOR)); this.get(ol.MapProperty.BACKGROUND_COLOR));
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'getBackgroundColor', 'getBackgroundColor',
ol3.Map.prototype.getBackgroundColor); ol.Map.prototype.getBackgroundColor);
/** /**
* @return {ol3.Coordinate|undefined} Center. * @return {ol.Coordinate|undefined} Center.
*/ */
ol3.Map.prototype.getCenter = function() { ol.Map.prototype.getCenter = function() {
return /** @type {ol3.Coordinate} */ this.get(ol3.MapProperty.CENTER); return /** @type {ol.Coordinate} */ this.get(ol.MapProperty.CENTER);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'getCenter', 'getCenter',
ol3.Map.prototype.getCenter); ol.Map.prototype.getCenter);
/** /**
* @return {Element} Container. * @return {Element} Container.
*/ */
ol3.Map.prototype.getContainer = function() { ol.Map.prototype.getContainer = function() {
return this.container_; return this.container_;
}; };
/** /**
* @param {ol3.Pixel} pixel Pixel. * @param {ol.Pixel} pixel Pixel.
* @return {ol3.Coordinate|undefined} Coordinate. * @return {ol.Coordinate|undefined} Coordinate.
*/ */
ol3.Map.prototype.getCoordinateFromPixel = function(pixel) { ol.Map.prototype.getCoordinateFromPixel = function(pixel) {
if (this.isDef()) { if (this.isDef()) {
return this.renderer_.getCoordinateFromPixel(pixel); return this.renderer_.getCoordinateFromPixel(pixel);
} else { } else {
@@ -298,9 +298,9 @@ ol3.Map.prototype.getCoordinateFromPixel = function(pixel) {
/** /**
* @return {ol3.Extent|undefined} Extent. * @return {ol.Extent|undefined} Extent.
*/ */
ol3.Map.prototype.getExtent = function() { ol.Map.prototype.getExtent = function() {
if (this.isDef()) { if (this.isDef()) {
var center = this.getCenter(); var center = this.getCenter();
var resolution = this.getResolution(); var resolution = this.getResolution();
@@ -309,7 +309,7 @@ ol3.Map.prototype.getExtent = function() {
var minY = center.y - resolution * size.height / 2; var minY = center.y - resolution * size.height / 2;
var maxX = center.x + resolution * size.width / 2; var maxX = center.x + resolution * size.width / 2;
var maxY = center.y + resolution * size.height / 2; var maxY = center.y + resolution * size.height / 2;
return new ol3.Extent(minX, minY, maxX, maxY); return new ol.Extent(minX, minY, maxX, maxY);
} else { } else {
return undefined; return undefined;
} }
@@ -317,30 +317,30 @@ ol3.Map.prototype.getExtent = function() {
/** /**
* @return {ol3.Collection} Interactions. * @return {ol.Collection} Interactions.
*/ */
ol3.Map.prototype.getInteractions = function() { ol.Map.prototype.getInteractions = function() {
return /** @type {ol3.Collection} */ this.get(ol3.MapProperty.INTERACTIONS); return /** @type {ol.Collection} */ this.get(ol.MapProperty.INTERACTIONS);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'getInteractions', 'getInteractions',
ol3.Map.prototype.getInteractions); ol.Map.prototype.getInteractions);
/** /**
* @return {ol3.Collection} Layers. * @return {ol.Collection} Layers.
*/ */
ol3.Map.prototype.getLayers = function() { ol.Map.prototype.getLayers = function() {
return /** @type {ol3.Collection} */ (this.get(ol3.MapProperty.LAYERS)); return /** @type {ol.Collection} */ (this.get(ol.MapProperty.LAYERS));
}; };
/** /**
* @param {ol3.Coordinate} coordinate Coordinate. * @param {ol.Coordinate} coordinate Coordinate.
* @return {ol3.Pixel|undefined} Pixel. * @return {ol.Pixel|undefined} Pixel.
*/ */
ol3.Map.prototype.getPixelFromCoordinate = function(coordinate) { ol.Map.prototype.getPixelFromCoordinate = function(coordinate) {
if (this.isDef()) { if (this.isDef()) {
return this.renderer_.getPixelFromCoordinate(coordinate); return this.renderer_.getPixelFromCoordinate(coordinate);
} else { } else {
@@ -350,34 +350,34 @@ ol3.Map.prototype.getPixelFromCoordinate = function(coordinate) {
/** /**
* @return {ol3.Projection|undefined} Projection. * @return {ol.Projection|undefined} Projection.
*/ */
ol3.Map.prototype.getProjection = function() { ol.Map.prototype.getProjection = function() {
return /** @type {ol3.Projection} */ this.get(ol3.MapProperty.PROJECTION); return /** @type {ol.Projection} */ this.get(ol.MapProperty.PROJECTION);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'getProjection', 'getProjection',
ol3.Map.prototype.getProjection); ol.Map.prototype.getProjection);
/** /**
* @return {number|undefined} Resolution. * @return {number|undefined} Resolution.
*/ */
ol3.Map.prototype.getResolution = function() { ol.Map.prototype.getResolution = function() {
return /** @type {number} */ this.get(ol3.MapProperty.RESOLUTION); return /** @type {number} */ this.get(ol.MapProperty.RESOLUTION);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'getResolution', 'getResolution',
ol3.Map.prototype.getResolution); ol.Map.prototype.getResolution);
/** /**
* @param {ol3.Extent} extent Extent. * @param {ol.Extent} extent Extent.
* @return {number|undefined} Resolution. * @return {number|undefined} Resolution.
*/ */
ol3.Map.prototype.getResolutionForExtent = function(extent) { ol.Map.prototype.getResolutionForExtent = function(extent) {
var size = this.getSize(); var size = this.getSize();
if (goog.isDef(size)) { if (goog.isDef(size)) {
var xResolution = (extent.maxX - extent.minX) / size.width; var xResolution = (extent.maxX - extent.minX) / size.width;
@@ -390,58 +390,58 @@ ol3.Map.prototype.getResolutionForExtent = function(extent) {
/** /**
* @return {ol3.Extent} Rotated extent. * @return {ol.Extent} Rotated extent.
*/ */
ol3.Map.prototype.getRotatedExtent = function() { ol.Map.prototype.getRotatedExtent = function() {
goog.asserts.assert(this.isDef()); goog.asserts.assert(this.isDef());
var center = /** @type {!ol3.Coordinate} */ this.getCenter(); var center = /** @type {!ol.Coordinate} */ this.getCenter();
var resolution = this.getResolution(); var resolution = this.getResolution();
var rotation = this.getRotation() || 0; var rotation = this.getRotation() || 0;
var size = this.getSize(); var size = this.getSize();
var xScale = resolution * size.width / 2; var xScale = resolution * size.width / 2;
var yScale = resolution * size.height / 2; var yScale = resolution * size.height / 2;
var corners = [ var corners = [
new ol3.Coordinate(-xScale, -yScale), new ol.Coordinate(-xScale, -yScale),
new ol3.Coordinate(-xScale, yScale), new ol.Coordinate(-xScale, yScale),
new ol3.Coordinate(xScale, -yScale), new ol.Coordinate(xScale, -yScale),
new ol3.Coordinate(xScale, yScale) new ol.Coordinate(xScale, yScale)
]; ];
goog.array.forEach(corners, function(corner) { goog.array.forEach(corners, function(corner) {
corner.rotate(rotation); corner.rotate(rotation);
corner.add(center); corner.add(center);
}); });
return ol3.Extent.boundingExtent.apply(null, corners); return ol.Extent.boundingExtent.apply(null, corners);
}; };
/** /**
* @return {number|undefined} Rotation. * @return {number|undefined} Rotation.
*/ */
ol3.Map.prototype.getRotation = function() { ol.Map.prototype.getRotation = function() {
return /** @type {number|undefined} */ this.get(ol3.MapProperty.ROTATION); return /** @type {number|undefined} */ this.get(ol.MapProperty.ROTATION);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'getRotation', 'getRotation',
ol3.Map.prototype.getRotation); ol.Map.prototype.getRotation);
/** /**
* @return {ol3.Size|undefined} Size. * @return {ol.Size|undefined} Size.
*/ */
ol3.Map.prototype.getSize = function() { ol.Map.prototype.getSize = function() {
return /** @type {ol3.Size|undefined} */ this.get(ol3.MapProperty.SIZE); return /** @type {ol.Size|undefined} */ this.get(ol.MapProperty.SIZE);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'getSize', 'getSize',
ol3.Map.prototype.getSize); ol.Map.prototype.getSize);
/** /**
* @return {ol3.Coordinate|undefined} Center in user projection. * @return {ol.Coordinate|undefined} Center in user projection.
*/ */
ol3.Map.prototype.getUserCenter = function() { ol.Map.prototype.getUserCenter = function() {
var center = this.getCenter(); var center = this.getCenter();
if (goog.isDef(center)) { if (goog.isDef(center)) {
return this.mapToUserTransform_(center); return this.mapToUserTransform_(center);
@@ -452,9 +452,9 @@ ol3.Map.prototype.getUserCenter = function() {
/** /**
* @return {ol3.Extent|undefined} Extent in user projection. * @return {ol.Extent|undefined} Extent in user projection.
*/ */
ol3.Map.prototype.getUserExtent = function() { ol.Map.prototype.getUserExtent = function() {
var extent = this.getExtent(); var extent = this.getExtent();
if (goog.isDef(extent)) { if (goog.isDef(extent)) {
return extent.transform(this.mapToUserTransform_); return extent.transform(this.mapToUserTransform_);
@@ -466,22 +466,22 @@ ol3.Map.prototype.getUserExtent = function() {
/** /**
* @export * @export
* @return {ol3.Projection|undefined} Projection. * @return {ol.Projection|undefined} Projection.
*/ */
ol3.Map.prototype.getUserProjection = function() { ol.Map.prototype.getUserProjection = function() {
return /** @type {ol3.Projection} */ this.get( return /** @type {ol.Projection} */ this.get(
ol3.MapProperty.USER_PROJECTION); ol.MapProperty.USER_PROJECTION);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'getUserProjection', 'getUserProjection',
ol3.Map.prototype.getUserProjection); ol.Map.prototype.getUserProjection);
/** /**
* @return {Element} Viewport. * @return {Element} Viewport.
*/ */
ol3.Map.prototype.getViewport = function() { ol.Map.prototype.getViewport = function() {
return this.viewport_; return this.viewport_;
}; };
@@ -490,11 +490,11 @@ ol3.Map.prototype.getViewport = function() {
* @param {goog.events.BrowserEvent} browserEvent Browser event. * @param {goog.events.BrowserEvent} browserEvent Browser event.
* @param {string=} opt_type Type. * @param {string=} opt_type Type.
*/ */
ol3.Map.prototype.handleBrowserEvent = function(browserEvent, opt_type) { ol.Map.prototype.handleBrowserEvent = function(browserEvent, opt_type) {
var type = opt_type || browserEvent.type; var type = opt_type || browserEvent.type;
var mapBrowserEvent = new ol3.MapBrowserEvent(type, this, browserEvent); var mapBrowserEvent = new ol.MapBrowserEvent(type, this, browserEvent);
var interactions = this.getInteractions(); var interactions = this.getInteractions();
var interactionsArray = /** @type {Array.<ol3.Interaction>} */ var interactionsArray = /** @type {Array.<ol.Interaction>} */
interactions.getArray(); interactions.getArray();
goog.array.every(interactionsArray, function(interaction) { goog.array.every(interactionsArray, function(interaction) {
interaction.handleMapBrowserEvent(mapBrowserEvent); interaction.handleMapBrowserEvent(mapBrowserEvent);
@@ -506,7 +506,7 @@ ol3.Map.prototype.handleBrowserEvent = function(browserEvent, opt_type) {
/** /**
* @param {goog.fx.DragEvent} dragEvent Drag event. * @param {goog.fx.DragEvent} dragEvent Drag event.
*/ */
ol3.Map.prototype.handleDraggerEvent = function(dragEvent) { ol.Map.prototype.handleDraggerEvent = function(dragEvent) {
var browserEvent = dragEvent.browserEvent; var browserEvent = dragEvent.browserEvent;
this.handleBrowserEvent(browserEvent, dragEvent.type); this.handleBrowserEvent(browserEvent, dragEvent.type);
}; };
@@ -515,7 +515,7 @@ ol3.Map.prototype.handleDraggerEvent = function(dragEvent) {
/** /**
* @protected * @protected
*/ */
ol3.Map.prototype.handleProjectionChanged = function() { ol.Map.prototype.handleProjectionChanged = function() {
this.recalculateTransforms_(); this.recalculateTransforms_();
}; };
@@ -523,7 +523,7 @@ ol3.Map.prototype.handleProjectionChanged = function() {
/** /**
* @protected * @protected
*/ */
ol3.Map.prototype.handleUserProjectionChanged = function() { ol.Map.prototype.handleUserProjectionChanged = function() {
this.recalculateTransforms_(); this.recalculateTransforms_();
}; };
@@ -531,8 +531,8 @@ ol3.Map.prototype.handleUserProjectionChanged = function() {
/** /**
* @protected * @protected
*/ */
ol3.Map.prototype.handleBrowserWindowResize = function() { ol.Map.prototype.handleBrowserWindowResize = function() {
var size = new ol3.Size(this.container_.clientWidth, var size = new ol.Size(this.container_.clientWidth,
this.container_.clientHeight); this.container_.clientHeight);
this.setSize(size); this.setSize(size);
}; };
@@ -541,7 +541,7 @@ ol3.Map.prototype.handleBrowserWindowResize = function() {
/** /**
* @return {boolean} Is animating. * @return {boolean} Is animating.
*/ */
ol3.Map.prototype.isAnimating = function() { ol.Map.prototype.isAnimating = function() {
return this.animatingCount_ > 0; return this.animatingCount_ > 0;
}; };
@@ -549,7 +549,7 @@ ol3.Map.prototype.isAnimating = function() {
/** /**
* @return {boolean} Is defined. * @return {boolean} Is defined.
*/ */
ol3.Map.prototype.isDef = function() { ol.Map.prototype.isDef = function() {
return goog.isDefAndNotNull(this.getCenter()) && return goog.isDefAndNotNull(this.getCenter()) &&
goog.isDef(this.getResolution()) && goog.isDef(this.getResolution()) &&
goog.isDefAndNotNull(this.getSize()); goog.isDefAndNotNull(this.getSize());
@@ -559,7 +559,7 @@ ol3.Map.prototype.isDef = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.Map.prototype.onAnimationFrame = function() { ol.Map.prototype.onAnimationFrame = function() {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('onAnimationFrame'); this.logger.info('onAnimationFrame');
} }
@@ -570,18 +570,18 @@ ol3.Map.prototype.onAnimationFrame = function() {
/** /**
* @private * @private
*/ */
ol3.Map.prototype.recalculateTransforms_ = function() { ol.Map.prototype.recalculateTransforms_ = function() {
var projection = this.getProjection(); var projection = this.getProjection();
var userProjection = this.getUserProjection(); var userProjection = this.getUserProjection();
if (goog.isDefAndNotNull(projection) && if (goog.isDefAndNotNull(projection) &&
goog.isDefAndNotNull(userProjection)) { goog.isDefAndNotNull(userProjection)) {
this.mapToUserTransform_ = ol3.Projection.getTransform( this.mapToUserTransform_ = ol.Projection.getTransform(
projection, userProjection); projection, userProjection);
this.userToMapTransform_ = ol3.Projection.getTransform( this.userToMapTransform_ = ol.Projection.getTransform(
userProjection, projection); userProjection, projection);
} else { } else {
this.mapToUserTransform_ = ol3.Projection.cloneTransform; this.mapToUserTransform_ = ol.Projection.cloneTransform;
this.userToMapTransform_ = ol3.Projection.identityTransform; this.userToMapTransform_ = ol.Projection.identityTransform;
} }
}; };
@@ -589,7 +589,7 @@ ol3.Map.prototype.recalculateTransforms_ = function() {
/** /**
* Render. * Render.
*/ */
ol3.Map.prototype.render = function() { ol.Map.prototype.render = function() {
if (this.animatingCount_ < 1) { if (this.animatingCount_ < 1) {
if (this.freezeRenderingCount_ === 0) { if (this.freezeRenderingCount_ === 0) {
this.renderFrame_(); this.renderFrame_();
@@ -603,7 +603,7 @@ ol3.Map.prototype.render = function() {
/** /**
* @private * @private
*/ */
ol3.Map.prototype.renderFrame_ = function() { ol.Map.prototype.renderFrame_ = function() {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('renderFrame_'); this.logger.info('renderFrame_');
} }
@@ -620,143 +620,143 @@ ol3.Map.prototype.renderFrame_ = function() {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('postrender'); this.logger.info('postrender');
} }
this.dispatchEvent(ol3.MapEventType.POST_RENDER); this.dispatchEvent(ol.MapEventType.POST_RENDER);
}; };
/** /**
* @param {ol3.Color} backgroundColor Background color. * @param {ol.Color} backgroundColor Background color.
*/ */
ol3.Map.prototype.setBackgroundColor = function(backgroundColor) { ol.Map.prototype.setBackgroundColor = function(backgroundColor) {
this.set(ol3.MapProperty.BACKGROUND_COLOR, backgroundColor); this.set(ol.MapProperty.BACKGROUND_COLOR, backgroundColor);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'setBackgroundColor', 'setBackgroundColor',
ol3.Map.prototype.setBackgroundColor); ol.Map.prototype.setBackgroundColor);
/** /**
* @param {ol3.Coordinate|undefined} center Center. * @param {ol.Coordinate|undefined} center Center.
*/ */
ol3.Map.prototype.setCenter = function(center) { ol.Map.prototype.setCenter = function(center) {
this.set(ol3.MapProperty.CENTER, center); this.set(ol.MapProperty.CENTER, center);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'setCenter', 'setCenter',
ol3.Map.prototype.setCenter); ol.Map.prototype.setCenter);
/** /**
* @param {ol3.Collection} interactions Interactions. * @param {ol.Collection} interactions Interactions.
*/ */
ol3.Map.prototype.setInteractions = function(interactions) { ol.Map.prototype.setInteractions = function(interactions) {
this.set(ol3.MapProperty.INTERACTIONS, interactions); this.set(ol.MapProperty.INTERACTIONS, interactions);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'setInteractions', 'setInteractions',
ol3.Map.prototype.setInteractions); ol.Map.prototype.setInteractions);
/** /**
* @export * @export
* @param {ol3.Collection} layers Layers. * @param {ol.Collection} layers Layers.
*/ */
ol3.Map.prototype.setLayers = function(layers) { ol.Map.prototype.setLayers = function(layers) {
this.set(ol3.MapProperty.LAYERS, layers); this.set(ol.MapProperty.LAYERS, layers);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'setLayers', 'setLayers',
ol3.Map.prototype.setLayers); ol.Map.prototype.setLayers);
/** /**
* @export * @export
* @param {ol3.Projection} projection Projection. * @param {ol.Projection} projection Projection.
*/ */
ol3.Map.prototype.setProjection = function(projection) { ol.Map.prototype.setProjection = function(projection) {
this.set(ol3.MapProperty.PROJECTION, projection); this.set(ol.MapProperty.PROJECTION, projection);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'setProjection', 'setProjection',
ol3.Map.prototype.setProjection); ol.Map.prototype.setProjection);
/** /**
* @export * @export
* @param {number|undefined} resolution Resolution. * @param {number|undefined} resolution Resolution.
*/ */
ol3.Map.prototype.setResolution = function(resolution) { ol.Map.prototype.setResolution = function(resolution) {
this.set(ol3.MapProperty.RESOLUTION, resolution); this.set(ol.MapProperty.RESOLUTION, resolution);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'setResolution', 'setResolution',
ol3.Map.prototype.setResolution); ol.Map.prototype.setResolution);
/** /**
* @export * @export
* @param {number|undefined} rotation Rotation. * @param {number|undefined} rotation Rotation.
*/ */
ol3.Map.prototype.setRotation = function(rotation) { ol.Map.prototype.setRotation = function(rotation) {
this.set(ol3.MapProperty.ROTATION, rotation); this.set(ol.MapProperty.ROTATION, rotation);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'setRotation', 'setRotation',
ol3.Map.prototype.setRotation); ol.Map.prototype.setRotation);
/** /**
* @param {ol3.Size} size Size. * @param {ol.Size} size Size.
*/ */
ol3.Map.prototype.setSize = function(size) { ol.Map.prototype.setSize = function(size) {
var currentSize = this.getSize(); var currentSize = this.getSize();
if (!goog.isDef(currentSize) || !currentSize.equals(size)) { if (!goog.isDef(currentSize) || !currentSize.equals(size)) {
this.set(ol3.MapProperty.SIZE, size); this.set(ol.MapProperty.SIZE, size);
} }
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'setSize', 'setSize',
ol3.Map.prototype.setSize); ol.Map.prototype.setSize);
/** /**
* @export * @export
* @param {ol3.Coordinate} userCenter Center in user projection. * @param {ol.Coordinate} userCenter Center in user projection.
*/ */
ol3.Map.prototype.setUserCenter = function(userCenter) { ol.Map.prototype.setUserCenter = function(userCenter) {
this.setCenter(this.userToMapTransform_(userCenter)); this.setCenter(this.userToMapTransform_(userCenter));
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'setUserCenter', 'setUserCenter',
ol3.Map.prototype.setUserCenter); ol.Map.prototype.setUserCenter);
/** /**
* @export * @export
* @param {ol3.Projection} userProjection User projection. * @param {ol.Projection} userProjection User projection.
*/ */
ol3.Map.prototype.setUserProjection = function(userProjection) { ol.Map.prototype.setUserProjection = function(userProjection) {
this.set(ol3.MapProperty.USER_PROJECTION, userProjection); this.set(ol.MapProperty.USER_PROJECTION, userProjection);
}; };
goog.exportProperty( goog.exportProperty(
ol3.Map.prototype, ol.Map.prototype,
'setUserProjection', 'setUserProjection',
ol3.Map.prototype.setUserProjection); ol.Map.prototype.setUserProjection);
/** /**
* Start animating. * Start animating.
*/ */
ol3.Map.prototype.startAnimating = function() { ol.Map.prototype.startAnimating = function() {
if (++this.animatingCount_ == 1) { if (++this.animatingCount_ == 1) {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('startAnimating'); this.logger.info('startAnimating');
@@ -769,7 +769,7 @@ ol3.Map.prototype.startAnimating = function() {
/** /**
* Stop animating. * Stop animating.
*/ */
ol3.Map.prototype.stopAnimating = function() { ol.Map.prototype.stopAnimating = function() {
goog.asserts.assert(this.animatingCount_ > 0); goog.asserts.assert(this.animatingCount_ > 0);
if (--this.animatingCount_ === 0) { if (--this.animatingCount_ === 0) {
if (goog.DEBUG) { if (goog.DEBUG) {
@@ -783,7 +783,7 @@ ol3.Map.prototype.stopAnimating = function() {
/** /**
* Unfreeze rendering. * Unfreeze rendering.
*/ */
ol3.Map.prototype.unfreezeRendering = function() { ol.Map.prototype.unfreezeRendering = function() {
goog.asserts.assert(this.freezeRenderingCount_ > 0); goog.asserts.assert(this.freezeRenderingCount_ > 0);
if (--this.freezeRenderingCount_ === 0 && if (--this.freezeRenderingCount_ === 0 &&
this.animatingCount_ < 1 && this.animatingCount_ < 1 &&
@@ -798,7 +798,7 @@ ol3.Map.prototype.unfreezeRendering = function() {
* @param {T=} opt_obj Object. * @param {T=} opt_obj Object.
* @template T * @template T
*/ */
ol3.Map.prototype.withFrozenRendering = function(f, opt_obj) { ol.Map.prototype.withFrozenRendering = function(f, opt_obj) {
this.freezeRendering(); this.freezeRendering();
try { try {
f.call(opt_obj); f.call(opt_obj);

View File

@@ -1,21 +1,21 @@
goog.provide('ol3.MapBrowserEvent'); goog.provide('ol.MapBrowserEvent');
goog.require('goog.events.BrowserEvent'); goog.require('goog.events.BrowserEvent');
goog.require('goog.style'); goog.require('goog.style');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.MapEvent'); goog.require('ol.MapEvent');
goog.require('ol3.Pixel'); goog.require('ol.Pixel');
/** /**
* @constructor * @constructor
* @extends {ol3.MapEvent} * @extends {ol.MapEvent}
* @param {string} type Event type. * @param {string} type Event type.
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
* @param {goog.events.BrowserEvent} browserEvent Browser event. * @param {goog.events.BrowserEvent} browserEvent Browser event.
*/ */
ol3.MapBrowserEvent = function(type, map, browserEvent) { ol.MapBrowserEvent = function(type, map, browserEvent) {
goog.base(this, type, map); goog.base(this, type, map);
@@ -26,18 +26,18 @@ ol3.MapBrowserEvent = function(type, map, browserEvent) {
/** /**
* @private * @private
* @type {ol3.Coordinate|undefined} * @type {ol.Coordinate|undefined}
*/ */
this.coordinate_ = undefined; this.coordinate_ = undefined;
}; };
goog.inherits(ol3.MapBrowserEvent, ol3.MapEvent); goog.inherits(ol.MapBrowserEvent, ol.MapEvent);
/** /**
* @return {ol3.Coordinate|undefined} Coordinate. * @return {ol.Coordinate|undefined} Coordinate.
*/ */
ol3.MapBrowserEvent.prototype.getCoordinate = function() { ol.MapBrowserEvent.prototype.getCoordinate = function() {
if (goog.isDef(this.coordinate_)) { if (goog.isDef(this.coordinate_)) {
return this.coordinate_; return this.coordinate_;
} else { } else {
@@ -45,7 +45,7 @@ ol3.MapBrowserEvent.prototype.getCoordinate = function() {
var browserEvent = this.browserEvent; var browserEvent = this.browserEvent;
var eventPosition = goog.style.getRelativePosition( var eventPosition = goog.style.getRelativePosition(
browserEvent, map.getViewport()); browserEvent, map.getViewport());
var pixel = new ol3.Pixel(eventPosition.x, eventPosition.y); var pixel = new ol.Pixel(eventPosition.x, eventPosition.y);
var coordinate = map.getCoordinateFromPixel(pixel); var coordinate = map.getCoordinateFromPixel(pixel);
this.coordinate_ = coordinate; this.coordinate_ = coordinate;
return coordinate; return coordinate;

View File

@@ -1,4 +1,4 @@
goog.provide('ol3.MapEvent'); goog.provide('ol.MapEvent');
goog.require('goog.events.Event'); goog.require('goog.events.Event');
@@ -8,14 +8,14 @@ goog.require('goog.events.Event');
* @constructor * @constructor
* @extends {goog.events.Event} * @extends {goog.events.Event}
* @param {string} type Event type. * @param {string} type Event type.
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
*/ */
ol3.MapEvent = function(type, map) { ol.MapEvent = function(type, map) {
goog.base(this, type); goog.base(this, type);
/** /**
* @type {ol3.Map} * @type {ol.Map}
*/ */
this.map = map; this.map = map;
@@ -25,13 +25,13 @@ ol3.MapEvent = function(type, map) {
this.defaultPrevented = false; this.defaultPrevented = false;
}; };
goog.inherits(ol3.MapEvent, goog.events.Event); goog.inherits(ol.MapEvent, goog.events.Event);
/** /**
* Prevents the default action. * Prevents the default action.
*/ */
ol3.MapEvent.prototype.preventDefault = function() { ol.MapEvent.prototype.preventDefault = function() {
goog.base(this, 'preventDefault'); goog.base(this, 'preventDefault');
this.defaultPrevented = true; this.defaultPrevented = true;
}; };

View File

@@ -5,7 +5,7 @@
* @see https://developers.google.com/maps/documentation/javascript/reference * @see https://developers.google.com/maps/documentation/javascript/reference
*/ */
goog.provide('ol3.Object'); goog.provide('ol.Object');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.events'); goog.require('goog.events');
@@ -16,7 +16,7 @@ goog.require('goog.object');
/** /**
* @enum {string} * @enum {string}
*/ */
ol3.ObjectProperty = { ol.ObjectProperty = {
ACCESSORS: 'ol_accessors_', ACCESSORS: 'ol_accessors_',
BINDINGS: 'ol_bindings_' BINDINGS: 'ol_bindings_'
}; };
@@ -28,52 +28,52 @@ ol3.ObjectProperty = {
* @extends {goog.events.EventTarget} * @extends {goog.events.EventTarget}
* @param {Object.<string, *>=} opt_values Values. * @param {Object.<string, *>=} opt_values Values.
*/ */
ol3.Object = function(opt_values) { ol.Object = function(opt_values) {
goog.base(this); goog.base(this);
if (goog.isDef(opt_values)) { if (goog.isDef(opt_values)) {
this.setValues(opt_values); this.setValues(opt_values);
} }
}; };
goog.inherits(ol3.Object, goog.events.EventTarget); goog.inherits(ol.Object, goog.events.EventTarget);
/** /**
* @private * @private
* @type {Object.<string, string>} * @type {Object.<string, string>}
*/ */
ol3.Object.changedEventTypeCache_ = {}; ol.Object.changedEventTypeCache_ = {};
/** /**
* @private * @private
* @type {Object.<string, string>} * @type {Object.<string, string>}
*/ */
ol3.Object.getterNameCache_ = {}; ol.Object.getterNameCache_ = {};
/** /**
* @private * @private
* @type {Object.<string, string>} * @type {Object.<string, string>}
*/ */
ol3.Object.setterNameCache_ = {}; ol.Object.setterNameCache_ = {};
/** /**
* @param {string} str String. * @param {string} str String.
* @return {string} Capitalized string. * @return {string} Capitalized string.
*/ */
ol3.Object.capitalize = function(str) { ol.Object.capitalize = function(str) {
return str.substr(0, 1).toUpperCase() + str.substr(1); return str.substr(0, 1).toUpperCase() + str.substr(1);
}; };
/** /**
* @param {ol3.Object} obj Object. * @param {ol.Object} obj Object.
* @return {Object.<string, {target: ol3.Object, key: string}>} Accessors. * @return {Object.<string, {target: ol.Object, key: string}>} Accessors.
*/ */
ol3.Object.getAccessors = function(obj) { ol.Object.getAccessors = function(obj) {
return obj[ol3.ObjectProperty.ACCESSORS] || return obj[ol.ObjectProperty.ACCESSORS] ||
(obj[ol3.ObjectProperty.ACCESSORS] = {}); (obj[ol.ObjectProperty.ACCESSORS] = {});
}; };
@@ -81,9 +81,9 @@ ol3.Object.getAccessors = function(obj) {
* @param {string} key Key. * @param {string} key Key.
* @return {string} Changed name. * @return {string} Changed name.
*/ */
ol3.Object.getChangedEventType = function(key) { ol.Object.getChangedEventType = function(key) {
return ol3.Object.changedEventTypeCache_[key] || return ol.Object.changedEventTypeCache_[key] ||
(ol3.Object.changedEventTypeCache_[key] = key.toLowerCase() + '_changed'); (ol.Object.changedEventTypeCache_[key] = key.toLowerCase() + '_changed');
}; };
@@ -91,19 +91,19 @@ ol3.Object.getChangedEventType = function(key) {
* @param {string} key String. * @param {string} key String.
* @return {string} Getter name. * @return {string} Getter name.
*/ */
ol3.Object.getGetterName = function(key) { ol.Object.getGetterName = function(key) {
return ol3.Object.getterNameCache_[key] || return ol.Object.getterNameCache_[key] ||
(ol3.Object.getterNameCache_[key] = 'get' + ol3.Object.capitalize(key)); (ol.Object.getterNameCache_[key] = 'get' + ol.Object.capitalize(key));
}; };
/** /**
* @param {ol3.Object} obj Object. * @param {ol.Object} obj Object.
* @return {Object.<string, ?number>} Listeners. * @return {Object.<string, ?number>} Listeners.
*/ */
ol3.Object.getListeners = function(obj) { ol.Object.getListeners = function(obj) {
return obj[ol3.ObjectProperty.BINDINGS] || return obj[ol.ObjectProperty.BINDINGS] ||
(obj[ol3.ObjectProperty.BINDINGS] = {}); (obj[ol.ObjectProperty.BINDINGS] = {});
}; };
@@ -111,28 +111,28 @@ ol3.Object.getListeners = function(obj) {
* @param {string} key String. * @param {string} key String.
* @return {string} Setter name. * @return {string} Setter name.
*/ */
ol3.Object.getSetterName = function(key) { ol.Object.getSetterName = function(key) {
return ol3.Object.setterNameCache_[key] || return ol.Object.setterNameCache_[key] ||
(ol3.Object.setterNameCache_[key] = 'set' + ol3.Object.capitalize(key)); (ol.Object.setterNameCache_[key] = 'set' + ol.Object.capitalize(key));
}; };
/** /**
* @param {string} key Key. * @param {string} key Key.
* @param {ol3.Object} target Target. * @param {ol.Object} target Target.
* @param {string=} opt_targetKey Target key. * @param {string=} opt_targetKey Target key.
* @param {boolean=} opt_noNotify No notify. * @param {boolean=} opt_noNotify No notify.
*/ */
ol3.Object.prototype.bindTo = ol.Object.prototype.bindTo =
function(key, target, opt_targetKey, opt_noNotify) { function(key, target, opt_targetKey, opt_noNotify) {
var targetKey = opt_targetKey || key; var targetKey = opt_targetKey || key;
this.unbind(key); this.unbind(key);
var eventType = ol3.Object.getChangedEventType(targetKey); var eventType = ol.Object.getChangedEventType(targetKey);
var listeners = ol3.Object.getListeners(this); var listeners = ol.Object.getListeners(this);
listeners[key] = goog.events.listen(target, eventType, function() { listeners[key] = goog.events.listen(target, eventType, function() {
this.notifyInternal_(key); this.notifyInternal_(key);
}, undefined, this); }, undefined, this);
var accessors = ol3.Object.getAccessors(this); var accessors = ol.Object.getAccessors(this);
accessors[key] = {target: target, key: targetKey}; accessors[key] = {target: target, key: targetKey};
var noNotify = opt_noNotify || false; var noNotify = opt_noNotify || false;
if (!noNotify) { if (!noNotify) {
@@ -144,20 +144,20 @@ ol3.Object.prototype.bindTo =
/** /**
* @param {string} key Key. * @param {string} key Key.
*/ */
ol3.Object.prototype.changed = goog.nullFunction; ol.Object.prototype.changed = goog.nullFunction;
/** /**
* @param {string} key Key. * @param {string} key Key.
* @return {*} Value. * @return {*} Value.
*/ */
ol3.Object.prototype.get = function(key) { ol.Object.prototype.get = function(key) {
var accessors = ol3.Object.getAccessors(this); var accessors = ol.Object.getAccessors(this);
if (goog.object.containsKey(accessors, key)) { if (goog.object.containsKey(accessors, key)) {
var accessor = accessors[key]; var accessor = accessors[key];
var target = accessor.target; var target = accessor.target;
var targetKey = accessor.key; var targetKey = accessor.key;
var getterName = ol3.Object.getGetterName(targetKey); var getterName = ol.Object.getGetterName(targetKey);
if (target[getterName]) { if (target[getterName]) {
return target[getterName](); return target[getterName]();
} else { } else {
@@ -172,8 +172,8 @@ ol3.Object.prototype.get = function(key) {
/** /**
* @param {string} key Key. * @param {string} key Key.
*/ */
ol3.Object.prototype.notify = function(key) { ol.Object.prototype.notify = function(key) {
var accessors = ol3.Object.getAccessors(this); var accessors = ol.Object.getAccessors(this);
if (goog.object.containsKey(accessors, key)) { if (goog.object.containsKey(accessors, key)) {
var accessor = accessors[key]; var accessor = accessors[key];
var target = accessor.target; var target = accessor.target;
@@ -189,8 +189,8 @@ ol3.Object.prototype.notify = function(key) {
* @param {string} key Key. * @param {string} key Key.
* @private * @private
*/ */
ol3.Object.prototype.notifyInternal_ = function(key) { ol.Object.prototype.notifyInternal_ = function(key) {
var eventType = ol3.Object.getChangedEventType(key); var eventType = ol.Object.getChangedEventType(key);
this.dispatchEvent(eventType); this.dispatchEvent(eventType);
}; };
@@ -199,13 +199,13 @@ ol3.Object.prototype.notifyInternal_ = function(key) {
* @param {string} key Key. * @param {string} key Key.
* @param {*} value Value. * @param {*} value Value.
*/ */
ol3.Object.prototype.set = function(key, value) { ol.Object.prototype.set = function(key, value) {
var accessors = ol3.Object.getAccessors(this); var accessors = ol.Object.getAccessors(this);
if (goog.object.containsKey(accessors, key)) { if (goog.object.containsKey(accessors, key)) {
var accessor = accessors[key]; var accessor = accessors[key];
var target = accessor.target; var target = accessor.target;
var targetKey = accessor.key; var targetKey = accessor.key;
var setterName = ol3.Object.getSetterName(targetKey); var setterName = ol.Object.getSetterName(targetKey);
if (target[setterName]) { if (target[setterName]) {
target[setterName](value); target[setterName](value);
} else { } else {
@@ -221,9 +221,9 @@ ol3.Object.prototype.set = function(key, value) {
/** /**
* @param {Object.<string, *>} options Options. * @param {Object.<string, *>} options Options.
*/ */
ol3.Object.prototype.setOptions = function(options) { ol.Object.prototype.setOptions = function(options) {
goog.object.forEach(options, function(value, key) { goog.object.forEach(options, function(value, key) {
var setterName = ol3.Object.getSetterName(key); var setterName = ol.Object.getSetterName(key);
if (this[setterName]) { if (this[setterName]) {
this[setterName](value); this[setterName](value);
} else { } else {
@@ -236,20 +236,20 @@ ol3.Object.prototype.setOptions = function(options) {
/** /**
* @param {Object.<string, *>} values Values. * @param {Object.<string, *>} values Values.
*/ */
ol3.Object.prototype.setValues = ol3.Object.prototype.setOptions; ol.Object.prototype.setValues = ol.Object.prototype.setOptions;
/** /**
* @param {string} key Key. * @param {string} key Key.
*/ */
ol3.Object.prototype.unbind = function(key) { ol.Object.prototype.unbind = function(key) {
var listeners = ol3.Object.getListeners(this); var listeners = ol.Object.getListeners(this);
var listener = listeners[key]; var listener = listeners[key];
if (listener) { if (listener) {
delete listeners[key]; delete listeners[key];
goog.events.unlistenByKey(listener); goog.events.unlistenByKey(listener);
var value = this.get(key); var value = this.get(key);
var accessors = ol3.Object.getAccessors(this); var accessors = ol.Object.getAccessors(this);
delete accessors[key]; delete accessors[key];
this[key] = value; this[key] = value;
} }
@@ -259,8 +259,8 @@ ol3.Object.prototype.unbind = function(key) {
/** /**
* Removes all bindings. * Removes all bindings.
*/ */
ol3.Object.prototype.unbindAll = function() { ol.Object.prototype.unbindAll = function() {
var listeners = ol3.Object.getListeners(this); var listeners = ol.Object.getListeners(this);
var keys = goog.object.getKeys(listeners); var keys = goog.object.getKeys(listeners);
goog.array.forEach(keys, function(key) { goog.array.forEach(keys, function(key) {
this.unbind(key); this.unbind(key);

View File

@@ -1,21 +1,21 @@
goog.require('goog.testing.jsunit'); goog.require('goog.testing.jsunit');
goog.require('ol3.Object'); goog.require('ol.Object');
function testModel() { function testModel() {
var m = new ol3.Object(); var m = new ol.Object();
assertNotNullNorUndefined(m); assertNotNullNorUndefined(m);
} }
function testGetUndefined() { function testGetUndefined() {
var m = new ol3.Object(); var m = new ol.Object();
assertUndefined(m.get('k')); assertUndefined(m.get('k'));
} }
function testGetSetGet() { function testGetSetGet() {
var m = new ol3.Object(); var m = new ol.Object();
assertUndefined(m.get('k')); assertUndefined(m.get('k'));
m.set('k', 1); m.set('k', 1);
assertEquals(1, m.get('k')); assertEquals(1, m.get('k'));
@@ -23,7 +23,7 @@ function testGetSetGet() {
function testSetValues() { function testSetValues() {
var m = new ol3.Object(); var m = new ol.Object();
m.setValues({ m.setValues({
k1: 1, k1: 1,
k2: 2 k2: 2
@@ -34,7 +34,7 @@ function testSetValues() {
function testNotifyKeyEvent() { function testNotifyKeyEvent() {
var m = new ol3.Object(); var m = new ol.Object();
var eventDispatched = false; var eventDispatched = false;
goog.events.listen(m, 'k_changed', function() { goog.events.listen(m, 'k_changed', function() {
eventDispatched = true; eventDispatched = true;
@@ -45,8 +45,8 @@ function testNotifyKeyEvent() {
function testBindSetNotifyKeyEvent() { function testBindSetNotifyKeyEvent() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
var callbackCalled = false; var callbackCalled = false;
goog.events.listen(n, 'k_changed', function() { goog.events.listen(n, 'k_changed', function() {
eventDispatched = true; eventDispatched = true;
@@ -58,7 +58,7 @@ function testBindSetNotifyKeyEvent() {
function testSetNotifyKeyEvent() { function testSetNotifyKeyEvent() {
var m = new ol3.Object(); var m = new ol.Object();
var eventDispatched = false; var eventDispatched = false;
goog.events.listen(m, 'k_changed', function() { goog.events.listen(m, 'k_changed', function() {
eventDispatched = true; eventDispatched = true;
@@ -69,8 +69,8 @@ function testSetNotifyKeyEvent() {
function testSetBind() { function testSetBind() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
m.set('k', 1); m.set('k', 1);
assertEquals(1, m.get('k')); assertEquals(1, m.get('k'));
assertUndefined(n.get('k')); assertUndefined(n.get('k'));
@@ -81,8 +81,8 @@ function testSetBind() {
function testBindSet() { function testBindSet() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
n.bindTo('k', m); n.bindTo('k', m);
m.set('k', 1); m.set('k', 1);
assertEquals(1, m.get('k')); assertEquals(1, m.get('k'));
@@ -91,8 +91,8 @@ function testBindSet() {
function testBindSetBackwards() { function testBindSetBackwards() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
n.bindTo('k', m); n.bindTo('k', m);
n.set('k', 1); n.set('k', 1);
assertEquals(1, m.get('k')); assertEquals(1, m.get('k'));
@@ -101,8 +101,8 @@ function testBindSetBackwards() {
function testSetBindBackwards() { function testSetBindBackwards() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
n.set('k', 1); n.set('k', 1);
n.bindTo('k', m); n.bindTo('k', m);
assertUndefined(m.get('k')); assertUndefined(m.get('k'));
@@ -111,8 +111,8 @@ function testSetBindBackwards() {
function testBindSetUnbind() { function testBindSetUnbind() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
n.bindTo('k', m); n.bindTo('k', m);
n.set('k', 1); n.set('k', 1);
assertEquals(1, m.get('k')); assertEquals(1, m.get('k'));
@@ -127,8 +127,8 @@ function testBindSetUnbind() {
function testUnbindAll() { function testUnbindAll() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
n.bindTo('k', m); n.bindTo('k', m);
n.set('k', 1); n.set('k', 1);
assertEquals(m.get('k'), 1); assertEquals(m.get('k'), 1);
@@ -143,8 +143,8 @@ function testUnbindAll() {
function testBindNotify() { function testBindNotify() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
m.bindTo('k', n); m.bindTo('k', n);
mEventDispatched = false; mEventDispatched = false;
goog.events.listen(m, 'k_changed', function() { goog.events.listen(m, 'k_changed', function() {
@@ -161,8 +161,8 @@ function testBindNotify() {
function testBindBackwardsNotify() { function testBindBackwardsNotify() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
n.bindTo('k', m); n.bindTo('k', m);
mEventDispatched = false; mEventDispatched = false;
goog.events.listen(m, 'k_changed', function() { goog.events.listen(m, 'k_changed', function() {
@@ -179,8 +179,8 @@ function testBindBackwardsNotify() {
function testBindRename() { function testBindRename() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
n.bindTo('kn', m, 'km'); n.bindTo('kn', m, 'km');
m.set('km', 1); m.set('km', 1);
assertEquals(m.get('km'), 1); assertEquals(m.get('km'), 1);
@@ -189,8 +189,8 @@ function testBindRename() {
function testBindRenameEvents() { function testBindRenameEvents() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
kmEventDispatched = false; kmEventDispatched = false;
goog.events.listen(m, 'km_changed', function() { goog.events.listen(m, 'km_changed', function() {
kmEventDispatched = true; kmEventDispatched = true;
@@ -209,9 +209,9 @@ function testBindRenameEvents() {
function testTransitiveBindForwards() { function testTransitiveBindForwards() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
var o = new ol3.Object(); var o = new ol.Object();
n.bindTo('kn', m, 'km'); n.bindTo('kn', m, 'km');
o.bindTo('ko', n, 'kn'); o.bindTo('ko', n, 'kn');
m.set('km', 1); m.set('km', 1);
@@ -222,9 +222,9 @@ function testTransitiveBindForwards() {
function testTransitiveBindBackwards() { function testTransitiveBindBackwards() {
var m = new ol3.Object(); var m = new ol.Object();
var n = new ol3.Object(); var n = new ol.Object();
var o = new ol3.Object(); var o = new ol.Object();
n.bindTo('kn', m, 'km'); n.bindTo('kn', m, 'km');
o.bindTo('ko', n, 'kn'); o.bindTo('ko', n, 'kn');
o.set('ko', 1); o.set('ko', 1);
@@ -236,10 +236,10 @@ function testTransitiveBindBackwards() {
function testMrideyAccessors() { function testMrideyAccessors() {
// http://blog.mridey.com/2010/03/maps-javascript-api-v3-more-about.html // http://blog.mridey.com/2010/03/maps-javascript-api-v3-more-about.html
var a = new ol3.Object(); var a = new ol.Object();
a.set('level', 2); a.set('level', 2);
assertEquals(2, a.get('level')); assertEquals(2, a.get('level'));
var b = new ol3.Object(); var b = new ol.Object();
b.setValues({ b.setValues({
level: 2, level: 2,
index: 3, index: 3,
@@ -251,16 +251,16 @@ function testMrideyAccessors() {
function testMrideyBinding() { function testMrideyBinding() {
// http://blog.mridey.com/2010/03/maps-javascript-api-v3-more-about.html // http://blog.mridey.com/2010/03/maps-javascript-api-v3-more-about.html
var a = new ol3.Object(); var a = new ol.Object();
a.set('level', 2); a.set('level', 2);
var b = new ol3.Object(); var b = new ol.Object();
b.bindTo('index', a, 'level'); b.bindTo('index', a, 'level');
assertEquals(2, b.get('index')); assertEquals(2, b.get('index'));
a.set('level', 3); a.set('level', 3);
assertEquals(3, b.get('index')); assertEquals(3, b.get('index'));
b.set('index', 4); b.set('index', 4);
assertEquals(4, a.get('level')); assertEquals(4, a.get('level'));
var c = new ol3.Object(); var c = new ol.Object();
c.bindTo('zoom', a, 'level'); c.bindTo('zoom', a, 'level');
assertEquals(4, c.get('zoom')); assertEquals(4, c.get('zoom'));
b.unbind('index'); b.unbind('index');
@@ -272,8 +272,8 @@ function testMrideyBinding() {
function testCircularBind() { function testCircularBind() {
var a = new ol3.Object(); var a = new ol.Object();
var b = new ol3.Object(); var b = new ol.Object();
a.bindTo('k', b); a.bindTo('k', b);
assertThrows(function() { assertThrows(function() {
b.bindTo('k', a); b.bindTo('k', a);
@@ -282,8 +282,8 @@ function testCircularBind() {
function testPriority() { function testPriority() {
var a = new ol3.Object(); var a = new ol.Object();
var b = new ol3.Object(); var b = new ol.Object();
a.set('k', 1); a.set('k', 1);
b.set('k', 2); b.set('k', 2);
a.bindTo('k', b); a.bindTo('k', b);
@@ -293,8 +293,8 @@ function testPriority() {
function testPriorityUndefined() { function testPriorityUndefined() {
var a = new ol3.Object(); var a = new ol.Object();
var b = new ol3.Object(); var b = new ol.Object();
a.set('k', 1); a.set('k', 1);
a.bindTo('k', b); a.bindTo('k', b);
assertUndefined(a.get('k')); assertUndefined(a.get('k'));
@@ -303,7 +303,7 @@ function testPriorityUndefined() {
function testSetter() { function testSetter() {
var a = new ol3.Object(); var a = new ol.Object();
var x; var x;
var setterCalled; var setterCalled;
a.setX = function(value) { a.setX = function(value) {
@@ -317,14 +317,14 @@ function testSetter() {
function testSetterBind() { function testSetterBind() {
var a = new ol3.Object(); var a = new ol.Object();
var x; var x;
var setterCalled; var setterCalled;
a.setX = function(value) { a.setX = function(value) {
this.x = value; this.x = value;
setterCalled = true; setterCalled = true;
}; };
var b = new ol3.Object(); var b = new ol.Object();
b.bindTo('x', a); b.bindTo('x', a);
b.set('x', 1); b.set('x', 1);
assertEquals(1, a.get('x')); assertEquals(1, a.get('x'));
@@ -334,7 +334,7 @@ function testSetterBind() {
function testGetter() { function testGetter() {
var a = new ol3.Object(); var a = new ol.Object();
var getterCalled; var getterCalled;
a.getX = function() { a.getX = function() {
getterCalled = true; getterCalled = true;
@@ -346,13 +346,13 @@ function testGetter() {
function testGetterBind() { function testGetterBind() {
var a = new ol3.Object(); var a = new ol.Object();
var getterCalled; var getterCalled;
a.getX = function() { a.getX = function() {
getterCalled = true; getterCalled = true;
return 1; return 1;
}; };
var b = new ol3.Object(); var b = new ol.Object();
b.bindTo('x', a); b.bindTo('x', a);
assertEquals(1, b.get('x')); assertEquals(1, b.get('x'));
assertTrue(getterCalled); assertTrue(getterCalled);
@@ -360,7 +360,7 @@ function testGetterBind() {
function testBindSelf() { function testBindSelf() {
var a = new ol3.Object(); var a = new ol.Object();
assertThrows(function() { assertThrows(function() {
a.bindTo('k', a); a.bindTo('k', a);
}); });
@@ -368,13 +368,13 @@ function testBindSelf() {
function testCreateWithOptions() { function testCreateWithOptions() {
var obj = new ol3.Object({k: 1}); var obj = new ol.Object({k: 1});
assertEquals(1, obj.get('k')); assertEquals(1, obj.get('k'));
} }
function testEventTypeCaseSensitivity() { function testEventTypeCaseSensitivity() {
var obj = new ol3.Object(); var obj = new ol.Object();
var lowercaseEventDispatched = false; var lowercaseEventDispatched = false;
goog.events.listen(obj, 'k_changed', function() { goog.events.listen(obj, 'k_changed', function() {
lowercaseEventDispatched = true; lowercaseEventDispatched = true;

View File

@@ -1,9 +1,9 @@
goog.provide('ol3'); goog.provide('ol');
goog.require('goog.debug.Logger'); goog.require('goog.debug.Logger');
if (goog.DEBUG) { if (goog.DEBUG) {
var logger = goog.debug.Logger.getLogger('ol3'); var logger = goog.debug.Logger.getLogger('ol');
logger.setLevel(goog.debug.Logger.Level.FINEST); logger.setLevel(goog.debug.Logger.Level.FINEST);
} }

24
src/ol/pixel.js Normal file
View File

@@ -0,0 +1,24 @@
goog.provide('ol.Pixel');
goog.require('goog.math.Coordinate');
/**
* @constructor
* @extends {goog.math.Coordinate}
* @param {number} x X.
* @param {number} y Y.
*/
ol.Pixel = function(x, y) {
goog.base(this, x, y);
};
goog.inherits(ol.Pixel, goog.math.Coordinate);
/**
* @return {ol.Pixel} Clone.
*/
ol.Pixel.prototype.clone = function() {
return new ol.Pixel(this.x, this.y);
};

View File

@@ -1,18 +1,18 @@
goog.provide('ol3.PixelBounds'); goog.provide('ol.PixelBounds');
goog.require('ol3.Rectangle'); goog.require('ol.Rectangle');
/** /**
* @constructor * @constructor
* @extends {ol3.Rectangle} * @extends {ol.Rectangle}
* @param {number} minX Minimum X. * @param {number} minX Minimum X.
* @param {number} minY Minimum Y. * @param {number} minY Minimum Y.
* @param {number} maxX Maximum X. * @param {number} maxX Maximum X.
* @param {number} maxY Maximum Y. * @param {number} maxY Maximum Y.
*/ */
ol3.PixelBounds = function(minX, minY, maxX, maxY) { ol.PixelBounds = function(minX, minY, maxX, maxY) {
goog.base(this, minX, minY, maxX, maxY); goog.base(this, minX, minY, maxX, maxY);
}; };
goog.inherits(ol3.PixelBounds, ol3.Rectangle); goog.inherits(ol.PixelBounds, ol.Rectangle);

500
src/ol/projection.js Normal file
View File

@@ -0,0 +1,500 @@
goog.provide('ol.Projection');
goog.require('goog.array');
goog.require('goog.asserts');
goog.require('goog.object');
goog.require('ol.Coordinate');
goog.require('ol.Extent');
goog.require('ol.TransformFunction');
/**
* @define {boolean} Enable Proj4js.
*/
ol.ENABLE_PROJ4JS = true;
/**
* @enum {string}
*/
ol.ProjectionUnits = {
DEGREES: 'degrees',
METERS: 'm'
};
/**
* @constructor
* @param {string} code Code.
* @param {ol.ProjectionUnits} units Units.
* @param {ol.Extent} extent Extent.
*/
ol.Projection = function(code, units, extent) {
/**
* @private
* @type {string}
*/
this.code_ = code;
/**
* @private
* @type {ol.ProjectionUnits}
*/
this.units_ = units;
/**
* @private
* @type {ol.Extent}
*/
this.extent_ = extent;
};
/**
* @return {string} Code.
*/
ol.Projection.prototype.getCode = function() {
return this.code_;
};
/**
* @return {ol.Extent} Extent.
*/
ol.Projection.prototype.getExtent = function() {
return this.extent_;
};
/**
* @return {ol.ProjectionUnits} Units.
*/
ol.Projection.prototype.getUnits = function() {
return this.units_;
};
/**
* @constructor
* @extends {ol.Projection}
* @param {string} code Code.
* @param {Proj4js.Proj} proj4jsProj Proj4js projection.
*/
ol.Proj4jsProjection = function(code, proj4jsProj) {
var units = /** @type {ol.ProjectionUnits} */ proj4jsProj.units;
goog.base(this, code, units, null);
/**
* @private
* @type {Proj4js.Proj}
*/
this.proj4jsProj_ = proj4jsProj;
};
goog.inherits(ol.Proj4jsProjection, ol.Projection);
/**
* @return {Proj4js.Proj} Proj4js projection.
*/
ol.Proj4jsProjection.prototype.getProj4jsProj = function() {
return this.proj4jsProj_;
};
/**
* @private
* @type {Object.<string, ol.Proj4jsProjection>}
*/
ol.Projection.proj4jsProjections_ = {};
/**
* @private
* @type {Object.<string, ol.Projection>}
*/
ol.Projection.projections_ = {};
/**
* @private
* @type {Object.<string, Object.<string, ol.TransformFunction>>}
*/
ol.Projection.transforms_ = {};
/**
* @param {Array.<ol.Projection>} projections Projections.
* @private
*/
ol.Projection.addEquivalentProjections_ = function(projections) {
ol.Projection.addProjections(projections);
goog.array.forEach(projections, function(source) {
goog.array.forEach(projections, function(destination) {
ol.Projection.addTransform(
source, destination, ol.Projection.cloneTransform);
});
});
};
/**
* @param {Array.<ol.Projection>} projections1 Projections.
* @param {Array.<ol.Projection>} projections2 Projections.
* @param {ol.TransformFunction} forwardTransform Forward transform.
* @param {ol.TransformFunction} inverseTransform Inverse transform.
* @private
*/
ol.Projection.addEquivalentTransforms_ =
function(projections1, projections2, forwardTransform, inverseTransform) {
goog.array.forEach(projections1, function(projection1) {
goog.array.forEach(projections2, function(projection2) {
ol.Projection.addTransform(projection1, projection2, forwardTransform);
ol.Projection.addTransform(projection2, projection1, inverseTransform);
});
});
};
/**
* @param {ol.Proj4jsProjection} proj4jsProjection Proj4js projection.
*/
ol.Projection.addProj4jsProjection = function(proj4jsProjection) {
var proj4jsProjections = ol.Projection.proj4jsProjections_;
var code = proj4jsProjection.getCode();
goog.asserts.assert(!goog.object.containsKey(proj4jsProjections, code));
proj4jsProjections[code] = proj4jsProjection;
};
/**
* @param {ol.Projection} projection Projection.
*/
ol.Projection.addProjection = function(projection) {
var projections = ol.Projection.projections_;
var code = projection.getCode();
goog.asserts.assert(!goog.object.containsKey(projections, code));
projections[code] = projection;
};
/**
* @param {Array.<ol.Projection>} projections Projections.
*/
ol.Projection.addProjections = function(projections) {
goog.array.forEach(projections, function(projection) {
ol.Projection.addProjection(projection);
});
};
/**
* @param {ol.Projection} source Source.
* @param {ol.Projection} destination Destination.
* @param {ol.TransformFunction} transformFn Transform.
*/
ol.Projection.addTransform = function(source, destination, transformFn) {
var projections = ol.Projection.projections_;
var sourceCode = source.getCode();
var destinationCode = destination.getCode();
var transforms = ol.Projection.transforms_;
if (!goog.object.containsKey(transforms, sourceCode)) {
transforms[sourceCode] = {};
}
goog.asserts.assert(
!goog.object.containsKey(transforms[sourceCode], destinationCode));
transforms[sourceCode][destinationCode] = transformFn;
};
/**
* @param {string} code Code.
* @return {ol.Projection} Projection.
*/
ol.Projection.getFromCode = function(code) {
var projection = ol.Projection.projections_[code];
if (ol.Projection.isProj4jsSupported() && !goog.isDef(projection)) {
projection = ol.Projection.getProj4jsProjectionFromCode_(code);
}
if (!goog.isDef(projection)) {
goog.asserts.assert(goog.isDef(projection));
projection = null;
}
return projection;
};
/**
* @param {string} code Code.
* @private
* @return {ol.Proj4jsProjection} Proj4js projection.
*/
ol.Projection.getProj4jsProjectionFromCode_ = function(code) {
var proj4jsProjections = ol.Projection.proj4jsProjections_;
var proj4jsProjection = proj4jsProjections[code];
if (!goog.isDef(proj4jsProjection)) {
var proj4jsProj = new Proj4js.Proj(code);
proj4jsProjection = new ol.Proj4jsProjection(code, proj4jsProj);
proj4jsProjections[code] = proj4jsProjection;
}
return proj4jsProjection;
};
/**
* @param {ol.Projection} projection1 Projection 1.
* @param {ol.Projection} projection2 Projection 2.
* @return {boolean} Equivalent.
*/
ol.Projection.equivalent = function(projection1, projection2) {
if (projection1 === projection2) {
return true;
} else if (projection1.getUnits() != projection2.getUnits()) {
return false;
} else {
var transformFn = ol.Projection.getTransform(projection1, projection2);
return transformFn === ol.Projection.cloneTransform;
}
};
/**
* @param {ol.Projection} source Source.
* @param {ol.Projection} destination Destination.
* @return {ol.TransformFunction} Transform.
*/
ol.Projection.getTransform = function(source, destination) {
var transforms = ol.Projection.transforms_;
var sourceCode = source.getCode();
var destinationCode = destination.getCode();
var transform;
if (goog.object.containsKey(transforms, sourceCode) &&
goog.object.containsKey(transforms[sourceCode], destinationCode)) {
transform = transforms[sourceCode][destinationCode];
}
if (ol.Projection.isProj4jsSupported() && !goog.isDef(transform)) {
var proj4jsSource;
if (source instanceof ol.Proj4jsProjection) {
proj4jsSource = source;
} else {
proj4jsSource =
ol.Projection.getProj4jsProjectionFromCode_(source.getCode());
}
var sourceProj4jsProj = proj4jsSource.getProj4jsProj();
var proj4jsDestination;
if (destination instanceof ol.Proj4jsProjection) {
proj4jsDestination = destination;
} else {
proj4jsDestination =
ol.Projection.getProj4jsProjectionFromCode_(source.getCode());
}
var destinationProj4jsProj = proj4jsDestination.getProj4jsProj();
transform =
/**
* @param {ol.Coordinate} coordinate Coordinate.
* @return {ol.Coordinate} Coordinate.
*/
function(coordinate) {
var proj4jsPoint = new Proj4js.Point(coordinate.x, coordinate.y);
proj4jsPoint = Proj4js.transform(
sourceProj4jsProj, destinationProj4jsProj, proj4jsPoint);
return new ol.Coordinate(proj4jsPoint.x, proj4jsPoint.y);
};
ol.Projection.addTransform(source, destination, transform);
}
if (!goog.isDef(transform)) {
goog.asserts.assert(goog.isDef(transform));
transform = ol.Projection.identityTransform;
}
return transform;
};
/**
* @param {string} sourceCode Source code.
* @param {string} destinationCode Destination code.
* @return {ol.TransformFunction} Transform.
*/
ol.Projection.getTransformFromCodes = function(sourceCode, destinationCode) {
var source = ol.Projection.getFromCode(sourceCode);
var destination = ol.Projection.getFromCode(destinationCode);
return ol.Projection.getTransform(source, destination);
};
/**
* @return {boolean} Has Proj4js.
*/
ol.Projection.isProj4jsSupported = function() {
return ol.ENABLE_PROJ4JS && 'Proj4js' in goog.global;
};
/**
* @param {ol.Coordinate} point Point.
* @return {ol.Coordinate} Point.
*/
ol.Projection.identityTransform = function(point) {
return point;
};
/**
* @param {ol.Coordinate} point Point.
* @return {ol.Coordinate} Point.
*/
ol.Projection.cloneTransform = function(point) {
return point.clone();
};
/**
* @param {ol.Coordinate} point Point.
* @param {ol.Projection} source Source.
* @param {ol.Projection} destination Destination.
* @return {ol.Coordinate} Point.
*/
ol.Projection.transform = function(point, source, destination) {
var transformFn = ol.Projection.getTransform(source, destination);
return transformFn(point);
};
/**
* @param {ol.Coordinate} point Point.
* @param {string} sourceCode Source code.
* @param {string} destinationCode Destination code.
* @return {ol.Coordinate} Point.
*/
ol.Projection.transformWithCodes =
function(point, sourceCode, destinationCode) {
var transformFn = ol.Projection.getTransformFromCodes(
sourceCode, destinationCode);
return transformFn(point);
};
/**
* @const
* @type {number}
*/
ol.Projection.EPSG_3857_RADIUS = 6378137;
/**
* @param {ol.Coordinate} point Point.
* @return {ol.Coordinate} Point.
*/
ol.Projection.forwardSphericalMercator = function(point) {
var x = ol.Projection.EPSG_3857_RADIUS * Math.PI * point.x / 180;
var y = ol.Projection.EPSG_3857_RADIUS *
Math.log(Math.tan(Math.PI * (point.y + 90) / 360));
return new ol.Coordinate(x, y);
};
/**
* @param {ol.Coordinate} point Point.
* @return {ol.Coordinate} Point.
*/
ol.Projection.inverseSphericalMercator = function(point) {
var x = 180 * point.x / (ol.Projection.EPSG_3857_RADIUS * Math.PI);
var y = 360 * Math.atan(
Math.exp(point.y / ol.Projection.EPSG_3857_RADIUS)) / Math.PI - 90;
return new ol.Coordinate(x, y);
};
/**
* @const
* @type {number}
*/
ol.Projection.EPSG_3857_HALF_SIZE = Math.PI * ol.Projection.EPSG_3857_RADIUS;
/**
* @const
* @type {ol.Extent}
*/
ol.Projection.EPSG_3857_EXTENT = new ol.Extent(
-ol.Projection.EPSG_3857_HALF_SIZE,
-ol.Projection.EPSG_3857_HALF_SIZE,
ol.Projection.EPSG_3857_HALF_SIZE,
ol.Projection.EPSG_3857_HALF_SIZE);
/**
* @private
* @type {Array.<string>}
*/
ol.Projection.EPSG_3857_LIKE_CODES_ = [
'EPSG:3857',
'EPSG:102100',
'EPSG:102113',
'EPSG:900913'
];
/**
* @const
* @private
* @type {Array.<ol.Projection>}
*/
ol.Projection.EPSG_3857_LIKE_PROJECTIONS_ = goog.array.map(
ol.Projection.EPSG_3857_LIKE_CODES_,
function(code) {
return new ol.Projection(
code,
ol.ProjectionUnits.METERS,
ol.Projection.EPSG_3857_EXTENT);
});
/**
* @const
* @private
* @type {ol.Extent}
*/
ol.Projection.EPSG_4326_EXTENT_ = new ol.Extent(-180, -90, 180, 90);
/**
* @private
* @type {Array.<string>}
*/
ol.Projection.EPSG_4326_LIKE_CODES_ = [
'CRS:84',
'EPSG:4326',
'urn:ogc:def:crs:EPSG:6.6:4326'
];
/**
* @const
* @type {Array.<ol.Projection>}
*/
ol.Projection.EPSG_4326_LIKE_PROJECTIONS = goog.array.map(
ol.Projection.EPSG_4326_LIKE_CODES_,
function(code) {
return new ol.Projection(
code,
ol.ProjectionUnits.DEGREES,
ol.Projection.EPSG_4326_EXTENT_);
});
ol.Projection.addEquivalentProjections_(
ol.Projection.EPSG_3857_LIKE_PROJECTIONS_);
ol.Projection.addEquivalentProjections_(
ol.Projection.EPSG_4326_LIKE_PROJECTIONS);
ol.Projection.addEquivalentTransforms_(
ol.Projection.EPSG_4326_LIKE_PROJECTIONS,
ol.Projection.EPSG_3857_LIKE_PROJECTIONS_,
ol.Projection.forwardSphericalMercator,
ol.Projection.inverseSphericalMercator);

View File

@@ -1,14 +1,14 @@
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.testing.jsunit'); goog.require('goog.testing.jsunit');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.Projection'); goog.require('ol.Projection');
function _testAllEquivalent(codes) { function _testAllEquivalent(codes) {
var projections = goog.array.map(codes, ol3.Projection.getFromCode); var projections = goog.array.map(codes, ol.Projection.getFromCode);
goog.array.forEach(projections, function(source) { goog.array.forEach(projections, function(source) {
goog.array.forEach(projections, function(destination) { goog.array.forEach(projections, function(destination) {
assertTrue(ol3.Projection.equivalent(source, destination)); assertTrue(ol.Projection.equivalent(source, destination));
}); });
}); });
} }
@@ -34,10 +34,10 @@ function testEpsg4326Equivalence() {
function testIdentityTransform() { function testIdentityTransform() {
var epsg4326 = ol3.Projection.getFromCode('EPSG:4326'); var epsg4326 = ol.Projection.getFromCode('EPSG:4326');
var uniqueObject = {}; var uniqueObject = {};
var sourcePoint = new ol3.Coordinate(uniqueObject, uniqueObject); var sourcePoint = new ol.Coordinate(uniqueObject, uniqueObject);
var destinationPoint = ol3.Projection.transform( var destinationPoint = ol.Projection.transform(
sourcePoint, epsg4326, epsg4326); sourcePoint, epsg4326, epsg4326);
assertFalse(sourcePoint === destinationPoint); assertFalse(sourcePoint === destinationPoint);
assertTrue(destinationPoint.x === sourcePoint.x); assertTrue(destinationPoint.x === sourcePoint.x);
@@ -46,8 +46,8 @@ function testIdentityTransform() {
function testForwardSphericalMercatorOrigin() { function testForwardSphericalMercatorOrigin() {
var point = ol3.Projection.transformWithCodes( var point = ol.Projection.transformWithCodes(
new ol3.Coordinate(0, 0), 'EPSG:4326', 'EPSG:3857'); new ol.Coordinate(0, 0), 'EPSG:4326', 'EPSG:3857');
assertNotNullNorUndefined(point); assertNotNullNorUndefined(point);
assertEquals(0, point.x); assertEquals(0, point.x);
assertRoughlyEquals(0, point.y, 1e-9); assertRoughlyEquals(0, point.y, 1e-9);
@@ -55,8 +55,8 @@ function testForwardSphericalMercatorOrigin() {
function testInverseSphericalMercatorOrigin() { function testInverseSphericalMercatorOrigin() {
var point = ol3.Projection.transformWithCodes( var point = ol.Projection.transformWithCodes(
new ol3.Coordinate(0, 0), 'EPSG:3857', 'EPSG:4326'); new ol.Coordinate(0, 0), 'EPSG:3857', 'EPSG:4326');
assertNotNullNorUndefined(point); assertNotNullNorUndefined(point);
assertEquals(0, point.x); assertEquals(0, point.x);
assertEquals(0, point.y); assertEquals(0, point.y);
@@ -65,8 +65,8 @@ function testInverseSphericalMercatorOrigin() {
function testForwardSphericalMercatorAlastaira() { function testForwardSphericalMercatorAlastaira() {
// http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/ // http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/
var point = ol3.Projection.transformWithCodes( var point = ol.Projection.transformWithCodes(
new ol3.Coordinate(-5.625, 52.4827802220782), new ol.Coordinate(-5.625, 52.4827802220782),
'EPSG:4326', 'EPSG:4326',
'EPSG:900913'); 'EPSG:900913');
assertNotNullNorUndefined(point); assertNotNullNorUndefined(point);
@@ -77,8 +77,8 @@ function testForwardSphericalMercatorAlastaira() {
function testInverseSphericalMercatorAlastaira() { function testInverseSphericalMercatorAlastaira() {
// http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/ // http://alastaira.wordpress.com/2011/01/23/the-google-maps-bing-maps-spherical-mercator-projection/
var point = ol3.Projection.transformWithCodes( var point = ol.Projection.transformWithCodes(
new ol3.Coordinate(-626172.13571216376, 6887893.4928337997), new ol.Coordinate(-626172.13571216376, 6887893.4928337997),
'EPSG:900913', 'EPSG:900913',
'EPSG:4326'); 'EPSG:4326');
assertNotNullNorUndefined(point); assertNotNullNorUndefined(point);

View File

@@ -1,8 +1,8 @@
goog.provide('ol3.Rectangle'); goog.provide('ol.Rectangle');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.Size'); goog.require('ol.Size');
@@ -13,7 +13,7 @@ goog.require('ol3.Size');
* @param {number} maxX Maximum X. * @param {number} maxX Maximum X.
* @param {number} maxY Maximum Y. * @param {number} maxY Maximum Y.
*/ */
ol3.Rectangle = function(minX, minY, maxX, maxY) { ol.Rectangle = function(minX, minY, maxX, maxY) {
goog.asserts.assert(minX <= maxX); goog.asserts.assert(minX <= maxX);
goog.asserts.assert(minY <= maxY); goog.asserts.assert(minY <= maxY);
@@ -42,28 +42,28 @@ ol3.Rectangle = function(minX, minY, maxX, maxY) {
/** /**
* @return {ol3.Rectangle} Clone. * @return {ol.Rectangle} Clone.
*/ */
ol3.Rectangle.prototype.clone = function() { ol.Rectangle.prototype.clone = function() {
return new ol3.Rectangle(this.minX, this.minY, this.maxX, this.maxY); return new ol.Rectangle(this.minX, this.minY, this.maxX, this.maxY);
}; };
/** /**
* @param {ol3.Coordinate} coordinate Coordinate. * @param {ol.Coordinate} coordinate Coordinate.
* @return {boolean} Contains. * @return {boolean} Contains.
*/ */
ol3.Rectangle.prototype.contains = function(coordinate) { ol.Rectangle.prototype.contains = function(coordinate) {
return this.minX <= coordinate.x && coordinate.x <= this.maxX && return this.minX <= coordinate.x && coordinate.x <= this.maxX &&
this.minY <= coordinate.y && coordinate.y <= this.maxY; this.minY <= coordinate.y && coordinate.y <= this.maxY;
}; };
/** /**
* @return {ol3.Coordinate} Center. * @return {ol.Coordinate} Center.
*/ */
ol3.Rectangle.prototype.getCenter = function() { ol.Rectangle.prototype.getCenter = function() {
return new ol3.Coordinate( return new ol.Coordinate(
(this.minX + this.maxX) / 2, (this.minY + this.maxY) / 2); (this.minX + this.maxX) / 2, (this.minY + this.maxY) / 2);
}; };
@@ -71,32 +71,32 @@ ol3.Rectangle.prototype.getCenter = function() {
/** /**
* @return {number} Height. * @return {number} Height.
*/ */
ol3.Rectangle.prototype.getHeight = function() { ol.Rectangle.prototype.getHeight = function() {
return this.maxY - this.minY; return this.maxY - this.minY;
}; };
/** /**
* @return {ol3.Size} Size. * @return {ol.Size} Size.
*/ */
ol3.Rectangle.prototype.getSize = function() { ol.Rectangle.prototype.getSize = function() {
return new ol3.Size(this.getWidth(), this.getHeight()); return new ol.Size(this.getWidth(), this.getHeight());
}; };
/** /**
* @return {number} Width. * @return {number} Width.
*/ */
ol3.Rectangle.prototype.getWidth = function() { ol.Rectangle.prototype.getWidth = function() {
return this.maxX - this.minX; return this.maxX - this.minX;
}; };
/** /**
* @param {ol3.Rectangle} rectangle Rectangle. * @param {ol.Rectangle} rectangle Rectangle.
* @return {boolean} Intersects. * @return {boolean} Intersects.
*/ */
ol3.Rectangle.prototype.intersects = function(rectangle) { ol.Rectangle.prototype.intersects = function(rectangle) {
return this.minX <= rectangle.maxX && return this.minX <= rectangle.maxX &&
this.maxX >= rectangle.minX && this.maxX >= rectangle.minX &&
this.minY <= rectangle.maxY && this.minY <= rectangle.maxY &&
@@ -105,11 +105,11 @@ ol3.Rectangle.prototype.intersects = function(rectangle) {
/** /**
* @param {ol3.Coordinate} coordinate Coordinate. * @param {ol.Coordinate} coordinate Coordinate.
* @return {ol3.Coordinate} Coordinate. * @return {ol.Coordinate} Coordinate.
*/ */
ol3.Rectangle.prototype.normalize = function(coordinate) { ol.Rectangle.prototype.normalize = function(coordinate) {
return new ol3.Coordinate( return new ol.Coordinate(
(coordinate.x - this.minX) / this.getWidth(), (coordinate.x - this.minX) / this.getWidth(),
(coordinate.y - this.minY) / this.getHeight()); (coordinate.y - this.minY) / this.getHeight());
}; };
@@ -118,6 +118,6 @@ ol3.Rectangle.prototype.normalize = function(coordinate) {
/** /**
* @return {string} String. * @return {string} String.
*/ */
ol3.Rectangle.prototype.toString = function() { ol.Rectangle.prototype.toString = function() {
return '(' + [this.minX, this.minY, this.maxX, this.maxY].join(', ') + ')'; return '(' + [this.minX, this.minY, this.maxX, this.maxY].join(', ') + ')';
}; };

142
src/ol/rectangle_test.js Normal file
View File

@@ -0,0 +1,142 @@
goog.require('goog.testing.jsunit');
goog.require('ol.Coordinate');
goog.require('ol.Rectangle');
function testCenter() {
var rectangle = new ol.Rectangle(1, 2, 3, 4);
var center = rectangle.getCenter();
assertEquals(2, center.x);
assertEquals(3, center.y);
}
function testClone() {
var rectangle = new ol.Rectangle(1, 2, 3, 4);
var clonedRectangle = rectangle.clone();
assertTrue(clonedRectangle instanceof ol.Rectangle);
assertFalse(clonedRectangle === rectangle);
assertEquals(rectangle.minX, clonedRectangle.minX);
assertEquals(rectangle.minY, clonedRectangle.minY);
assertEquals(rectangle.maxX, clonedRectangle.maxX);
assertEquals(rectangle.maxY, clonedRectangle.maxY);
}
function testContainsPositive() {
var rectangle = new ol.Rectangle(1, 2, 3, 4);
assertTrue(rectangle.contains(new ol.Coordinate(1, 2)));
assertTrue(rectangle.contains(new ol.Coordinate(1, 3)));
assertTrue(rectangle.contains(new ol.Coordinate(1, 4)));
assertTrue(rectangle.contains(new ol.Coordinate(2, 2)));
assertTrue(rectangle.contains(new ol.Coordinate(2, 3)));
assertTrue(rectangle.contains(new ol.Coordinate(2, 4)));
assertTrue(rectangle.contains(new ol.Coordinate(3, 2)));
assertTrue(rectangle.contains(new ol.Coordinate(3, 3)));
assertTrue(rectangle.contains(new ol.Coordinate(3, 4)));
}
function testContainsNegative() {
var rectangle = new ol.Rectangle(1, 2, 3, 4);
assertFalse(rectangle.contains(new ol.Coordinate(0, 1)));
assertFalse(rectangle.contains(new ol.Coordinate(0, 2)));
assertFalse(rectangle.contains(new ol.Coordinate(0, 3)));
assertFalse(rectangle.contains(new ol.Coordinate(0, 4)));
assertFalse(rectangle.contains(new ol.Coordinate(0, 5)));
assertFalse(rectangle.contains(new ol.Coordinate(1, 1)));
assertFalse(rectangle.contains(new ol.Coordinate(1, 5)));
assertFalse(rectangle.contains(new ol.Coordinate(2, 1)));
assertFalse(rectangle.contains(new ol.Coordinate(2, 5)));
assertFalse(rectangle.contains(new ol.Coordinate(3, 1)));
assertFalse(rectangle.contains(new ol.Coordinate(3, 5)));
assertFalse(rectangle.contains(new ol.Coordinate(4, 1)));
assertFalse(rectangle.contains(new ol.Coordinate(4, 2)));
assertFalse(rectangle.contains(new ol.Coordinate(4, 3)));
assertFalse(rectangle.contains(new ol.Coordinate(4, 4)));
assertFalse(rectangle.contains(new ol.Coordinate(4, 5)));
}
function testIntersects() {
var rectangle1 = new ol.Rectangle(50, 50, 100, 100);
function assertIntersects(rectangle2) {
assertTrue(rectangle1 + ' expected to intersect ' + rectangle2,
rectangle1.intersects(rectangle2));
}
function assertNotIntersects(rectangle2) {
assertFalse(rectangle1 + ' expected to not intersect ' + rectangle2,
rectangle1.intersects(rectangle2));
}
assertIntersects(rectangle1);
assertIntersects(new ol.Rectangle(20, 20, 80, 80));
assertIntersects(new ol.Rectangle(20, 50, 80, 100));
assertIntersects(new ol.Rectangle(20, 80, 80, 120));
assertIntersects(new ol.Rectangle(50, 20, 100, 80));
assertIntersects(new ol.Rectangle(50, 80, 100, 120));
assertIntersects(new ol.Rectangle(80, 20, 120, 80));
assertIntersects(new ol.Rectangle(80, 50, 120, 100));
assertIntersects(new ol.Rectangle(80, 80, 120, 120));
assertIntersects(new ol.Rectangle(20, 20, 120, 120));
assertIntersects(new ol.Rectangle(70, 70, 80, 80));
assertNotIntersects(new ol.Rectangle(10, 10, 30, 30));
assertNotIntersects(new ol.Rectangle(30, 10, 70, 30));
assertNotIntersects(new ol.Rectangle(50, 10, 100, 30));
assertNotIntersects(new ol.Rectangle(80, 10, 120, 30));
assertNotIntersects(new ol.Rectangle(120, 10, 140, 30));
assertNotIntersects(new ol.Rectangle(10, 30, 30, 70));
assertNotIntersects(new ol.Rectangle(120, 30, 140, 70));
assertNotIntersects(new ol.Rectangle(10, 50, 30, 100));
assertNotIntersects(new ol.Rectangle(120, 50, 140, 100));
assertNotIntersects(new ol.Rectangle(10, 80, 30, 120));
assertNotIntersects(new ol.Rectangle(120, 80, 140, 120));
assertNotIntersects(new ol.Rectangle(10, 120, 30, 140));
assertNotIntersects(new ol.Rectangle(30, 120, 70, 140));
assertNotIntersects(new ol.Rectangle(50, 120, 100, 140));
assertNotIntersects(new ol.Rectangle(80, 120, 120, 140));
assertNotIntersects(new ol.Rectangle(120, 120, 140, 140));
}
function testSize() {
var rectangle = new ol.Rectangle(0, 1, 2, 4);
var size = rectangle.getSize();
assertEquals(2, size.width);
assertEquals(3, size.height);
}
function testNormalize() {
var rectangle = new ol.Rectangle(0, 1, 2, 3);
var coordinate;
coordinate = rectangle.normalize(new ol.Coordinate(1, 2));
assertEquals(0.5, coordinate.x);
assertEquals(0.5, coordinate.y);
coordinate = rectangle.normalize(new ol.Coordinate(0, 3));
assertEquals(0, coordinate.x);
assertEquals(1, coordinate.y);
coordinate = rectangle.normalize(new ol.Coordinate(2, 1));
assertEquals(1, coordinate.x);
assertEquals(0, coordinate.y);
coordinate = rectangle.normalize(new ol.Coordinate(0, 0));
assertEquals(0, coordinate.x);
assertEquals(-0.5, coordinate.y);
coordinate = rectangle.normalize(new ol.Coordinate(-1, 1));
assertEquals(-0.5, coordinate.x);
assertEquals(0, coordinate.y);
}
function testToString() {
var rectangle = new ol.Rectangle(0, 1, 2, 3);
assertEquals('(0, 1, 2, 3)', rectangle.toString());
}

View File

@@ -0,0 +1,9 @@
goog.provide('ol.renderer.dom');
goog.require('goog.functions');
/**
* @return {boolean} Is supported.
*/
ol.renderer.dom.isSupported = goog.functions.TRUE;

View File

@@ -0,0 +1,85 @@
goog.provide('ol.renderer.dom.Layer');
goog.require('ol.Coordinate');
goog.require('ol.renderer.Layer');
/**
* @constructor
* @extends {ol.renderer.Layer}
* @param {ol.renderer.Map} mapRenderer Map renderer.
* @param {ol.Layer} layer Layer.
* @param {!Element} target Target.
*/
ol.renderer.dom.Layer = function(mapRenderer, layer, target) {
goog.base(this, mapRenderer, layer);
/**
* @type {!Element}
* @protected
*/
this.target = target;
/**
* Top left corner of the target in map coords.
*
* @type {ol.Coordinate}
* @protected
*/
this.origin = null;
this.handleLayerOpacityChange();
this.handleLayerVisibleChange();
};
goog.inherits(ol.renderer.dom.Layer, ol.renderer.Layer);
/**
* @inheritDoc
* @return {ol.renderer.Map} Map renderer.
*/
ol.renderer.dom.Layer.prototype.getMapRenderer = function() {
return /** @type {ol.renderer.dom.Map} */ goog.base(this, 'getMapRenderer');
};
/**
* @inheritDoc
*/
ol.renderer.dom.Layer.prototype.handleLayerLoad = function() {
this.getMap().render();
};
/**
* @inheritDoc
*/
ol.renderer.dom.Layer.prototype.handleLayerOpacityChange = function() {
goog.style.setOpacity(this.target, this.getLayer().getOpacity());
};
/**
* @inheritDoc
*/
ol.renderer.dom.Layer.prototype.handleLayerVisibleChange = function() {
goog.style.showElement(this.target, this.getLayer().getVisible());
};
/**
* Render.
*/
ol.renderer.dom.Layer.prototype.render = goog.abstractMethod;
/**
* Set the location of the top left corner of the target.
*
* @param {ol.Coordinate} origin Origin.
*/
ol.renderer.dom.Layer.prototype.setOrigin = function(origin) {
this.origin = origin;
};

View File

@@ -1,24 +1,24 @@
goog.provide('ol3.renderer.dom.Map'); goog.provide('ol.renderer.dom.Map');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('goog.dom'); goog.require('goog.dom');
goog.require('goog.dom.TagName'); goog.require('goog.dom.TagName');
goog.require('goog.style'); goog.require('goog.style');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.Map'); goog.require('ol.Map');
goog.require('ol3.TileLayer'); goog.require('ol.TileLayer');
goog.require('ol3.renderer.Map'); goog.require('ol.renderer.Map');
goog.require('ol3.renderer.dom.TileLayer'); goog.require('ol.renderer.dom.TileLayer');
/** /**
* @constructor * @constructor
* @extends {ol3.renderer.Map} * @extends {ol.renderer.Map}
* @param {Element} container Container. * @param {Element} container Container.
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
*/ */
ol3.renderer.dom.Map = function(container, map) { ol.renderer.dom.Map = function(container, map) {
goog.base(this, container, map); goog.base(this, container, map);
@@ -38,7 +38,7 @@ ol3.renderer.dom.Map = function(container, map) {
this.layerPanes_ = {}; this.layerPanes_ = {};
/** /**
* @type {ol3.Coordinate|undefined} * @type {ol.Coordinate|undefined}
* @private * @private
*/ */
this.renderedCenter_ = undefined; this.renderedCenter_ = undefined;
@@ -46,27 +46,27 @@ ol3.renderer.dom.Map = function(container, map) {
/** /**
* The pixel offset of the layers pane with respect to its container. * The pixel offset of the layers pane with respect to its container.
* *
* @type {ol3.Coordinate} * @type {ol.Coordinate}
* @private * @private
*/ */
this.layersPaneOffset_ = null; this.layersPaneOffset_ = null;
}; };
goog.inherits(ol3.renderer.dom.Map, ol3.renderer.Map); goog.inherits(ol.renderer.dom.Map, ol.renderer.Map);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.dom.Map.prototype.createLayerRenderer = function(layer) { ol.renderer.dom.Map.prototype.createLayerRenderer = function(layer) {
if (layer instanceof ol3.TileLayer) { if (layer instanceof ol.TileLayer) {
var layerPane = goog.dom.createElement(goog.dom.TagName.DIV); var layerPane = goog.dom.createElement(goog.dom.TagName.DIV);
layerPane.className = 'ol-layer'; layerPane.className = 'ol-layer';
layerPane.style.position = 'absolute'; layerPane.style.position = 'absolute';
goog.dom.appendChild(this.layersPane_, layerPane); goog.dom.appendChild(this.layersPane_, layerPane);
var layerRenderer = new ol3.renderer.dom.TileLayer(this, layer, layerPane); var layerRenderer = new ol.renderer.dom.TileLayer(this, layer, layerPane);
this.layerPanes_[goog.getUid(layerRenderer)] = layerPane; this.layerPanes_[goog.getUid(layerRenderer)] = layerPane;
@@ -82,7 +82,7 @@ ol3.renderer.dom.Map.prototype.createLayerRenderer = function(layer) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.dom.Map.prototype.handleCenterChanged = function() { ol.renderer.dom.Map.prototype.handleCenterChanged = function() {
goog.base(this, 'handleCenterChanged'); goog.base(this, 'handleCenterChanged');
var map = this.getMap(); var map = this.getMap();
if (!map.isDef()) { if (!map.isDef()) {
@@ -102,7 +102,7 @@ ol3.renderer.dom.Map.prototype.handleCenterChanged = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.dom.Map.prototype.handleResolutionChanged = function() { ol.renderer.dom.Map.prototype.handleResolutionChanged = function() {
goog.base(this, 'handleResolutionChanged'); goog.base(this, 'handleResolutionChanged');
var map = this.getMap(); var map = this.getMap();
if (!map.isDef()) { if (!map.isDef()) {
@@ -119,8 +119,8 @@ ol3.renderer.dom.Map.prototype.handleResolutionChanged = function() {
* Reset the layers pane to its initial position. * Reset the layers pane to its initial position.
* @private * @private
*/ */
ol3.renderer.dom.Map.prototype.resetLayersPane_ = function() { ol.renderer.dom.Map.prototype.resetLayersPane_ = function() {
var offset = new ol3.Coordinate(0, 0); var offset = new ol.Coordinate(0, 0);
goog.style.setPosition(this.layersPane_, offset); goog.style.setPosition(this.layersPane_, offset);
this.layersPaneOffset_ = offset; this.layersPaneOffset_ = offset;
@@ -134,13 +134,13 @@ ol3.renderer.dom.Map.prototype.resetLayersPane_ = function() {
* Set the origin for each layer renderer. * Set the origin for each layer renderer.
* @private * @private
*/ */
ol3.renderer.dom.Map.prototype.setOrigin_ = function() { ol.renderer.dom.Map.prototype.setOrigin_ = function() {
var center = this.map.getCenter(); var center = this.map.getCenter();
var resolution = this.map.getResolution(); var resolution = this.map.getResolution();
var targetSize = this.map.getSize(); var targetSize = this.map.getSize();
var targetWidth = targetSize.width; var targetWidth = targetSize.width;
var targetHeight = targetSize.height; var targetHeight = targetSize.height;
var origin = new ol3.Coordinate( var origin = new ol.Coordinate(
center.x - resolution * targetWidth / 2, center.x - resolution * targetWidth / 2,
center.y + resolution * targetHeight / 2); center.y + resolution * targetHeight / 2);
goog.object.forEach(this.layerRenderers, function(layerRenderer) { goog.object.forEach(this.layerRenderers, function(layerRenderer) {
@@ -153,7 +153,7 @@ ol3.renderer.dom.Map.prototype.setOrigin_ = function() {
* Move the layers pane. * Move the layers pane.
* @private * @private
*/ */
ol3.renderer.dom.Map.prototype.shiftLayersPane_ = function() { ol.renderer.dom.Map.prototype.shiftLayersPane_ = function() {
var center = this.map.getCenter(); var center = this.map.getCenter();
var oldCenter = this.renderedCenter_; var oldCenter = this.renderedCenter_;
var resolution = this.map.getResolution(); var resolution = this.map.getResolution();

View File

@@ -1,20 +1,20 @@
goog.provide('ol3.renderer.dom.TileLayer'); goog.provide('ol.renderer.dom.TileLayer');
goog.require('goog.dom'); goog.require('goog.dom');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.Extent'); goog.require('ol.Extent');
goog.require('ol3.renderer.dom.Layer'); goog.require('ol.renderer.dom.Layer');
/** /**
* @constructor * @constructor
* @extends {ol3.renderer.dom.Layer} * @extends {ol.renderer.dom.Layer}
* @param {ol3.renderer.Map} mapRenderer Map renderer. * @param {ol.renderer.Map} mapRenderer Map renderer.
* @param {ol3.TileLayer} tileLayer Tile layer. * @param {ol.TileLayer} tileLayer Tile layer.
* @param {!Element} target Target. * @param {!Element} target Target.
*/ */
ol3.renderer.dom.TileLayer = function(mapRenderer, tileLayer, target) { ol.renderer.dom.TileLayer = function(mapRenderer, tileLayer, target) {
goog.base(this, mapRenderer, tileLayer, target); goog.base(this, mapRenderer, tileLayer, target);
/** /**
@@ -29,15 +29,15 @@ ol3.renderer.dom.TileLayer = function(mapRenderer, tileLayer, target) {
*/ */
this.renderedMapResolution_ = undefined; this.renderedMapResolution_ = undefined;
}; };
goog.inherits(ol3.renderer.dom.TileLayer, ol3.renderer.dom.Layer); goog.inherits(ol.renderer.dom.TileLayer, ol.renderer.dom.Layer);
/** /**
* @inheritDoc * @inheritDoc
* @return {ol3.TileLayer} Layer. * @return {ol.TileLayer} Layer.
*/ */
ol3.renderer.dom.TileLayer.prototype.getLayer = function() { ol.renderer.dom.TileLayer.prototype.getLayer = function() {
return /** @type {ol3.TileLayer} */ goog.base(this, 'getLayer'); return /** @type {ol.TileLayer} */ goog.base(this, 'getLayer');
}; };
@@ -46,14 +46,14 @@ ol3.renderer.dom.TileLayer.prototype.getLayer = function() {
* @private * @private
* @param {number} z Z. * @param {number} z Z.
* @param {number} resolution Resolution. * @param {number} resolution Resolution.
* @return {ol3.Coordinate} Offset. * @return {ol.Coordinate} Offset.
*/ */
ol3.renderer.dom.TileLayer.prototype.getTileOffset_ = function(z, resolution) { ol.renderer.dom.TileLayer.prototype.getTileOffset_ = function(z, resolution) {
var tileLayer = this.getLayer(); var tileLayer = this.getLayer();
var tileStore = tileLayer.getStore(); var tileStore = tileLayer.getStore();
var tileGrid = tileStore.getTileGrid(); var tileGrid = tileStore.getTileGrid();
var tileOrigin = tileGrid.getOrigin(z); var tileOrigin = tileGrid.getOrigin(z);
var offset = new ol3.Coordinate( var offset = new ol.Coordinate(
Math.round((this.origin.x - tileOrigin.x) / resolution), Math.round((this.origin.x - tileOrigin.x) / resolution),
Math.round((tileOrigin.y - this.origin.y) / resolution)); Math.round((tileOrigin.y - this.origin.y) / resolution));
return offset; return offset;
@@ -63,14 +63,14 @@ ol3.renderer.dom.TileLayer.prototype.getTileOffset_ = function(z, resolution) {
/** /**
* Get rid of tiles outside the rendered extent. * Get rid of tiles outside the rendered extent.
* @private * @private
* @param {ol3.TileBounds} tileBounds Tile bounds. * @param {ol.TileBounds} tileBounds Tile bounds.
* @param {number} z Z. * @param {number} z Z.
*/ */
ol3.renderer.dom.TileLayer.prototype.removeInvisibleTiles_ = function( ol.renderer.dom.TileLayer.prototype.removeInvisibleTiles_ = function(
tileBounds, z) { tileBounds, z) {
var key, tileCoord, prune, tile; var key, tileCoord, prune, tile;
for (key in this.renderedTiles_) { for (key in this.renderedTiles_) {
tileCoord = ol3.TileCoord.createFromString(key); tileCoord = ol.TileCoord.createFromString(key);
prune = z !== tileCoord.z || prune = z !== tileCoord.z ||
tileCoord.x < tileBounds.minX || tileCoord.x < tileBounds.minX ||
tileCoord.x > tileBounds.maxX || tileCoord.x > tileBounds.maxX ||
@@ -88,13 +88,13 @@ ol3.renderer.dom.TileLayer.prototype.removeInvisibleTiles_ = function(
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.dom.TileLayer.prototype.render = function() { ol.renderer.dom.TileLayer.prototype.render = function() {
var map = this.getMap(); var map = this.getMap();
if (!map.isDef()) { if (!map.isDef()) {
return; return;
} }
var mapExtent = /** @type {!ol3.Extent} */ map.getExtent(); var mapExtent = /** @type {!ol.Extent} */ map.getExtent();
var mapResolution = /** @type {number} */ map.getResolution(); var mapResolution = /** @type {number} */ map.getResolution();
var tileLayer = this.getLayer(); var tileLayer = this.getLayer();

127
src/ol/renderer/layer.js Normal file
View File

@@ -0,0 +1,127 @@
goog.provide('ol.renderer.Layer');
goog.require('goog.events');
goog.require('goog.events.EventType');
goog.require('ol.Layer');
goog.require('ol.LayerProperty');
goog.require('ol.Object');
/**
* @constructor
* @extends {ol.Object}
* @param {ol.renderer.Map} mapRenderer Map renderer.
* @param {ol.Layer} layer Layer.
*/
ol.renderer.Layer = function(mapRenderer, layer) {
goog.base(this);
/**
* @private
* @type {ol.renderer.Map}
*/
this.mapRenderer_ = mapRenderer;
/**
* @private
* @type {ol.Layer}
*/
this.layer_ = layer;
goog.events.listen(this.layer_,
ol.Object.getChangedEventType(ol.LayerProperty.BRIGHTNESS),
this.handleLayerBrightnessChange, false, this);
goog.events.listen(this.layer_,
ol.Object.getChangedEventType(ol.LayerProperty.CONTRAST),
this.handleLayerContrastChange, false, this);
goog.events.listen(this.layer_,
ol.Object.getChangedEventType(ol.LayerProperty.HUE),
this.handleLayerHueChange, false, this);
goog.events.listen(this.layer_, goog.events.EventType.LOAD,
this.handleLayerLoad, false, this);
goog.events.listen(this.layer_,
ol.Object.getChangedEventType(ol.LayerProperty.OPACITY),
this.handleLayerOpacityChange, false, this);
goog.events.listen(this.layer_,
ol.Object.getChangedEventType(ol.LayerProperty.SATURATION),
this.handleLayerSaturationChange, false, this);
goog.events.listen(this.layer_,
ol.Object.getChangedEventType(ol.LayerProperty.VISIBLE),
this.handleLayerVisibleChange, false, this);
};
goog.inherits(ol.renderer.Layer, ol.Object);
/**
* @return {ol.Layer} Layer.
*/
ol.renderer.Layer.prototype.getLayer = function() {
return this.layer_;
};
/**
* @return {ol.Map} Map.
*/
ol.renderer.Layer.prototype.getMap = function() {
return this.mapRenderer_.getMap();
};
/**
* @return {ol.renderer.Map} Map renderer.
*/
ol.renderer.Layer.prototype.getMapRenderer = function() {
return this.mapRenderer_;
};
/**
* @protected
*/
ol.renderer.Layer.prototype.handleLayerBrightnessChange = goog.nullFunction;
/**
* @protected
*/
ol.renderer.Layer.prototype.handleLayerContrastChange = goog.nullFunction;
/**
* @protected
*/
ol.renderer.Layer.prototype.handleLayerHueChange = goog.nullFunction;
/**
* @protected
*/
ol.renderer.Layer.prototype.handleLayerLoad = goog.nullFunction;
/**
* @protected
*/
ol.renderer.Layer.prototype.handleLayerOpacityChange = goog.nullFunction;
/**
* @protected
*/
ol.renderer.Layer.prototype.handleLayerSaturationChange = goog.nullFunction;
/**
* @protected
*/
ol.renderer.Layer.prototype.handleLayerVisibleChange = goog.nullFunction;

View File

@@ -1,12 +1,12 @@
goog.provide('ol3.renderer.Map'); goog.provide('ol.renderer.Map');
goog.require('goog.Disposable'); goog.require('goog.Disposable');
goog.require('goog.events'); goog.require('goog.events');
goog.require('goog.fx.anim'); goog.require('goog.fx.anim');
goog.require('goog.fx.anim.Animated'); goog.require('goog.fx.anim.Animated');
goog.require('goog.vec.Mat4'); goog.require('goog.vec.Mat4');
goog.require('ol3.Map'); goog.require('ol.Map');
goog.require('ol3.MapProperty'); goog.require('ol.MapProperty');
@@ -14,9 +14,9 @@ goog.require('ol3.MapProperty');
* @constructor * @constructor
* @extends {goog.Disposable} * @extends {goog.Disposable}
* @param {Element} container Container. * @param {Element} container Container.
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
*/ */
ol3.renderer.Map = function(container, map) { ol.renderer.Map = function(container, map) {
goog.base(this); goog.base(this);
@@ -28,13 +28,13 @@ ol3.renderer.Map = function(container, map) {
/** /**
* @protected * @protected
* @type {ol3.Map} * @type {ol.Map}
*/ */
this.map = map; this.map = map;
/** /**
* @protected * @protected
* @type {Object.<number, ol3.renderer.Layer>} * @type {Object.<number, ol.renderer.Layer>}
*/ */
this.layerRenderers = {}; this.layerRenderers = {};
@@ -68,39 +68,39 @@ ol3.renderer.Map = function(container, map) {
*/ */
this.mapListenerKeys_ = [ this.mapListenerKeys_ = [
goog.events.listen( goog.events.listen(
map, ol3.Object.getChangedEventType(ol3.MapProperty.BACKGROUND_COLOR), map, ol.Object.getChangedEventType(ol.MapProperty.BACKGROUND_COLOR),
this.handleBackgroundColorChanged, false, this), this.handleBackgroundColorChanged, false, this),
goog.events.listen( goog.events.listen(
map, ol3.Object.getChangedEventType(ol3.MapProperty.CENTER), map, ol.Object.getChangedEventType(ol.MapProperty.CENTER),
this.handleCenterChanged, false, this), this.handleCenterChanged, false, this),
goog.events.listen( goog.events.listen(
map, ol3.Object.getChangedEventType(ol3.MapProperty.LAYERS), map, ol.Object.getChangedEventType(ol.MapProperty.LAYERS),
this.handleLayersChanged, false, this), this.handleLayersChanged, false, this),
goog.events.listen( goog.events.listen(
map, ol3.Object.getChangedEventType(ol3.MapProperty.RESOLUTION), map, ol.Object.getChangedEventType(ol.MapProperty.RESOLUTION),
this.handleResolutionChanged, false, this), this.handleResolutionChanged, false, this),
goog.events.listen( goog.events.listen(
map, ol3.Object.getChangedEventType(ol3.MapProperty.ROTATION), map, ol.Object.getChangedEventType(ol.MapProperty.ROTATION),
this.handleRotationChanged, false, this), this.handleRotationChanged, false, this),
goog.events.listen( goog.events.listen(
map, ol3.Object.getChangedEventType(ol3.MapProperty.SIZE), map, ol.Object.getChangedEventType(ol.MapProperty.SIZE),
this.handleSizeChanged, false, this) this.handleSizeChanged, false, this)
]; ];
}; };
goog.inherits(ol3.renderer.Map, goog.Disposable); goog.inherits(ol.renderer.Map, goog.Disposable);
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.addLayer = function(layer) { ol.renderer.Map.prototype.addLayer = function(layer) {
var layerRenderer = this.createLayerRenderer(layer); var layerRenderer = this.createLayerRenderer(layer);
this.setLayerRenderer(layer, layerRenderer); this.setLayerRenderer(layer, layerRenderer);
}; };
@@ -109,21 +109,21 @@ ol3.renderer.Map.prototype.addLayer = function(layer) {
/** /**
* @return {boolean} Can rotate. * @return {boolean} Can rotate.
*/ */
ol3.renderer.Map.prototype.canRotate = goog.functions.FALSE; ol.renderer.Map.prototype.canRotate = goog.functions.FALSE;
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @protected * @protected
* @return {ol3.renderer.Layer} layerRenderer Layer renderer. * @return {ol.renderer.Layer} layerRenderer Layer renderer.
*/ */
ol3.renderer.Map.prototype.createLayerRenderer = goog.abstractMethod; ol.renderer.Map.prototype.createLayerRenderer = goog.abstractMethod;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.Map.prototype.disposeInternal = function() { ol.renderer.Map.prototype.disposeInternal = function() {
goog.object.forEach(this.layerRenderers, function(layerRenderer) { goog.object.forEach(this.layerRenderers, function(layerRenderer) {
goog.dispose(layerRenderer); goog.dispose(layerRenderer);
}); });
@@ -136,11 +136,11 @@ ol3.renderer.Map.prototype.disposeInternal = function() {
/** /**
* @param {function(this: T, ol3.Layer, ol3.renderer.Layer, number)} f Function. * @param {function(this: T, ol.Layer, ol.renderer.Layer, number)} f Function.
* @param {T=} opt_obj Object. * @param {T=} opt_obj Object.
* @template T * @template T
*/ */
ol3.renderer.Map.prototype.forEachReadyVisibleLayer = function(f, opt_obj) { ol.renderer.Map.prototype.forEachReadyVisibleLayer = function(f, opt_obj) {
var layers = this.map.getLayers(); var layers = this.map.getLayers();
layers.forEach(function(layer, index) { layers.forEach(function(layer, index) {
if (layer.isReady() && layer.getVisible()) { if (layer.isReady() && layer.getVisible()) {
@@ -152,23 +152,23 @@ ol3.renderer.Map.prototype.forEachReadyVisibleLayer = function(f, opt_obj) {
/** /**
* @param {ol3.Pixel} pixel Pixel. * @param {ol.Pixel} pixel Pixel.
* @return {ol3.Coordinate} Coordinate. * @return {ol.Coordinate} Coordinate.
*/ */
ol3.renderer.Map.prototype.getCoordinateFromPixel = function(pixel) { ol.renderer.Map.prototype.getCoordinateFromPixel = function(pixel) {
this.updateMatrices_(); this.updateMatrices_();
var vec3 = [pixel.x, pixel.y, 0]; var vec3 = [pixel.x, pixel.y, 0];
goog.vec.Mat4.multVec3(this.pixelToCoordinateMatrix_, vec3, vec3); goog.vec.Mat4.multVec3(this.pixelToCoordinateMatrix_, vec3, vec3);
return new ol3.Coordinate(vec3[0], vec3[1]); return new ol.Coordinate(vec3[0], vec3[1]);
}; };
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @protected * @protected
* @return {ol3.renderer.Layer} Layer renderer. * @return {ol.renderer.Layer} Layer renderer.
*/ */
ol3.renderer.Map.prototype.getLayerRenderer = function(layer) { ol.renderer.Map.prototype.getLayerRenderer = function(layer) {
var key = goog.getUid(layer); var key = goog.getUid(layer);
var layerRenderer = this.layerRenderers[key]; var layerRenderer = this.layerRenderers[key];
goog.asserts.assert(goog.isDef(layerRenderer)); goog.asserts.assert(goog.isDef(layerRenderer));
@@ -177,45 +177,45 @@ ol3.renderer.Map.prototype.getLayerRenderer = function(layer) {
/** /**
* @return {ol3.Map} Map. * @return {ol.Map} Map.
*/ */
ol3.renderer.Map.prototype.getMap = function() { ol.renderer.Map.prototype.getMap = function() {
return this.map; return this.map;
}; };
/** /**
* @param {ol3.Coordinate} coordinate Coordinate. * @param {ol.Coordinate} coordinate Coordinate.
* @return {ol3.Pixel} Pixel. * @return {ol.Pixel} Pixel.
*/ */
ol3.renderer.Map.prototype.getPixelFromCoordinate = function(coordinate) { ol.renderer.Map.prototype.getPixelFromCoordinate = function(coordinate) {
this.updateMatrices_(); this.updateMatrices_();
var vec3 = [coordinate.x, coordinate.y, 0]; var vec3 = [coordinate.x, coordinate.y, 0];
goog.vec.Mat4.multVec3(this.coordinateToPixelMatrix_, vec3, vec3); goog.vec.Mat4.multVec3(this.coordinateToPixelMatrix_, vec3, vec3);
return new ol3.Pixel(vec3[0], vec3[1]); return new ol.Pixel(vec3[0], vec3[1]);
}; };
/** /**
* Handle background color changed. * Handle background color changed.
*/ */
ol3.renderer.Map.prototype.handleBackgroundColorChanged = goog.nullFunction; ol.renderer.Map.prototype.handleBackgroundColorChanged = goog.nullFunction;
/** /**
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.handleCenterChanged = function() { ol.renderer.Map.prototype.handleCenterChanged = function() {
this.matricesDirty_ = true; this.matricesDirty_ = true;
}; };
/** /**
* @param {ol3.CollectionEvent} collectionEvent Collection event. * @param {ol.CollectionEvent} collectionEvent Collection event.
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.handleLayersAdd = function(collectionEvent) { ol.renderer.Map.prototype.handleLayersAdd = function(collectionEvent) {
var layer = /** @type {ol3.Layer} */ collectionEvent.elem; var layer = /** @type {ol.Layer} */ collectionEvent.elem;
this.addLayer(layer); this.addLayer(layer);
}; };
@@ -223,7 +223,7 @@ ol3.renderer.Map.prototype.handleLayersAdd = function(collectionEvent) {
/** /**
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.handleLayersChanged = function() { ol.renderer.Map.prototype.handleLayersChanged = function() {
var layerRenderers = goog.object.getValues(this.layerRenderers); var layerRenderers = goog.object.getValues(this.layerRenderers);
goog.array.forEach(layerRenderers, function(layerRenderer) { goog.array.forEach(layerRenderers, function(layerRenderer) {
this.removeLayerRenderer(layerRenderer); this.removeLayerRenderer(layerRenderer);
@@ -237,9 +237,9 @@ ol3.renderer.Map.prototype.handleLayersChanged = function() {
if (goog.isDefAndNotNull(layers)) { if (goog.isDefAndNotNull(layers)) {
layers.forEach(this.addLayer, this); layers.forEach(this.addLayer, this);
this.layersListenerKeys_ = [ this.layersListenerKeys_ = [
goog.events.listen(layers, ol3.CollectionEventType.ADD, goog.events.listen(layers, ol.CollectionEventType.ADD,
this.handleLayersAdd, false, this), this.handleLayersAdd, false, this),
goog.events.listen(layers, ol3.CollectionEventType.REMOVE, goog.events.listen(layers, ol.CollectionEventType.REMOVE,
this.handleLayersRemove, false, this) this.handleLayersRemove, false, this)
]; ];
} }
@@ -247,11 +247,11 @@ ol3.renderer.Map.prototype.handleLayersChanged = function() {
/** /**
* @param {ol3.CollectionEvent} collectionEvent Collection event. * @param {ol.CollectionEvent} collectionEvent Collection event.
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.handleLayersRemove = function(collectionEvent) { ol.renderer.Map.prototype.handleLayersRemove = function(collectionEvent) {
var layer = /** @type {ol3.Layer} */ collectionEvent.elem; var layer = /** @type {ol.Layer} */ collectionEvent.elem;
this.removeLayer(layer); this.removeLayer(layer);
}; };
@@ -259,7 +259,7 @@ ol3.renderer.Map.prototype.handleLayersRemove = function(collectionEvent) {
/** /**
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.handleResolutionChanged = function() { ol.renderer.Map.prototype.handleResolutionChanged = function() {
this.matricesDirty_ = true; this.matricesDirty_ = true;
}; };
@@ -267,7 +267,7 @@ ol3.renderer.Map.prototype.handleResolutionChanged = function() {
/** /**
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.handleRotationChanged = function() { ol.renderer.Map.prototype.handleRotationChanged = function() {
this.matricesDirty_ = true; this.matricesDirty_ = true;
}; };
@@ -275,26 +275,26 @@ ol3.renderer.Map.prototype.handleRotationChanged = function() {
/** /**
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.handleSizeChanged = function() { ol.renderer.Map.prototype.handleSizeChanged = function() {
this.matricesDirty_ = true; this.matricesDirty_ = true;
}; };
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.removeLayer = function(layer) { ol.renderer.Map.prototype.removeLayer = function(layer) {
goog.dispose(this.removeLayerRenderer(layer)); goog.dispose(this.removeLayerRenderer(layer));
}; };
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @return {ol3.renderer.Layer} Layer renderer. * @return {ol.renderer.Layer} Layer renderer.
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.removeLayerRenderer = function(layer) { ol.renderer.Map.prototype.removeLayerRenderer = function(layer) {
var key = goog.getUid(layer); var key = goog.getUid(layer);
if (key in this.layerRenderers) { if (key in this.layerRenderers) {
var layerRenderer = this.layerRenderers[key]; var layerRenderer = this.layerRenderers[key];
@@ -309,7 +309,7 @@ ol3.renderer.Map.prototype.removeLayerRenderer = function(layer) {
/** /**
* @return {boolean} Animating. * @return {boolean} Animating.
*/ */
ol3.renderer.Map.prototype.render = function() { ol.renderer.Map.prototype.render = function() {
var animate = false; var animate = false;
this.forEachReadyVisibleLayer(function(layer, layerRenderer) { this.forEachReadyVisibleLayer(function(layer, layerRenderer) {
if (layerRenderer.render()) { if (layerRenderer.render()) {
@@ -321,11 +321,11 @@ ol3.renderer.Map.prototype.render = function() {
/** /**
* @param {ol3.Layer} layer Layer. * @param {ol.Layer} layer Layer.
* @param {ol3.renderer.Layer} layerRenderer Layer renderer. * @param {ol.renderer.Layer} layerRenderer Layer renderer.
* @protected * @protected
*/ */
ol3.renderer.Map.prototype.setLayerRenderer = function(layer, layerRenderer) { ol.renderer.Map.prototype.setLayerRenderer = function(layer, layerRenderer) {
var key = goog.getUid(layer); var key = goog.getUid(layer);
goog.asserts.assert(!(key in this.layerRenderers)); goog.asserts.assert(!(key in this.layerRenderers));
this.layerRenderers[key] = layerRenderer; this.layerRenderers[key] = layerRenderer;
@@ -335,15 +335,15 @@ ol3.renderer.Map.prototype.setLayerRenderer = function(layer, layerRenderer) {
/** /**
* @private * @private
*/ */
ol3.renderer.Map.prototype.updateMatrices_ = function() { ol.renderer.Map.prototype.updateMatrices_ = function() {
if (this.matricesDirty_) { if (this.matricesDirty_) {
var map = this.map; var map = this.map;
var center = /** @type {!ol3.Coordinate} */ map.getCenter(); var center = /** @type {!ol.Coordinate} */ map.getCenter();
var resolution = /** @type {number} */ map.getResolution(); var resolution = /** @type {number} */ map.getResolution();
var rotation = map.getRotation(); var rotation = map.getRotation();
var size = /** @type {!ol3.Size} */ map.getSize(); var size = /** @type {!ol.Size} */ map.getSize();
goog.vec.Mat4.makeIdentity(this.coordinateToPixelMatrix_); goog.vec.Mat4.makeIdentity(this.coordinateToPixelMatrix_);
goog.vec.Mat4.translate(this.coordinateToPixelMatrix_, goog.vec.Mat4.translate(this.coordinateToPixelMatrix_,

View File

@@ -0,0 +1,116 @@
goog.provide('ol.renderer.webgl.Layer');
goog.require('goog.vec.Mat4');
goog.require('ol.Layer');
goog.require('ol.renderer.Layer');
/**
* @constructor
* @extends {ol.renderer.Layer}
* @param {ol.renderer.Map} mapRenderer Map renderer.
* @param {ol.Layer} layer Layer.
*/
ol.renderer.webgl.Layer = function(mapRenderer, layer) {
goog.base(this, mapRenderer, layer);
};
goog.inherits(ol.renderer.webgl.Layer, ol.renderer.Layer);
/**
* @protected
*/
ol.renderer.webgl.Layer.prototype.dispatchChangeEvent = function() {
this.dispatchEvent(goog.events.EventType.CHANGE);
};
/**
* @inheritDoc
* @return {ol.renderer.Map} MapRenderer.
*/
ol.renderer.webgl.Layer.prototype.getMapRenderer = function() {
return /** @type {ol.renderer.webgl.Map} */ goog.base(
this, 'getMapRenderer');
};
/**
* @return {goog.vec.Mat4.AnyType} Matrix.
*/
ol.renderer.webgl.Layer.prototype.getMatrix = goog.abstractMethod;
/**
* @return {WebGLTexture} Texture.
*/
ol.renderer.webgl.Layer.prototype.getTexture = goog.abstractMethod;
/**
* @inheritDoc
*/
ol.renderer.webgl.Layer.prototype.handleLayerBrightnessChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol.renderer.webgl.Layer.prototype.handleLayerContrastChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol.renderer.webgl.Layer.prototype.handleLayerHueChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol.renderer.webgl.Layer.prototype.handleLayerLoad = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol.renderer.webgl.Layer.prototype.handleLayerOpacityChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol.renderer.webgl.Layer.prototype.handleLayerSaturationChange = function() {
this.dispatchChangeEvent();
};
/**
* @inheritDoc
*/
ol.renderer.webgl.Layer.prototype.handleLayerVisibleChange = function() {
this.dispatchChangeEvent();
};
/**
* Handle webglcontextlost.
*/
ol.renderer.webgl.Layer.prototype.handleWebGLContextLost = goog.nullFunction;
/**
* Render.
*/
ol.renderer.webgl.Layer.prototype.render = goog.abstractMethod;

View File

@@ -4,8 +4,8 @@
// FIXME defer cleanup until post-render // FIXME defer cleanup until post-render
// FIXME check against gl.getParameter(webgl.MAX_TEXTURE_SIZE) // FIXME check against gl.getParameter(webgl.MAX_TEXTURE_SIZE)
goog.provide('ol3.renderer.webgl.Map'); goog.provide('ol.renderer.webgl.Map');
goog.provide('ol3.renderer.webgl.map.shader'); goog.provide('ol.renderer.webgl.map.shader');
goog.require('goog.debug.Logger'); goog.require('goog.debug.Logger');
goog.require('goog.dispose'); goog.require('goog.dispose');
@@ -17,29 +17,29 @@ goog.require('goog.events.EventType');
goog.require('goog.functions'); goog.require('goog.functions');
goog.require('goog.style'); goog.require('goog.style');
goog.require('goog.webgl'); goog.require('goog.webgl');
goog.require('ol3.Layer'); goog.require('ol.Layer');
goog.require('ol3.Map'); goog.require('ol.Map');
goog.require('ol3.TileLayer'); goog.require('ol.TileLayer');
goog.require('ol3.renderer.webgl.FragmentShader'); goog.require('ol.renderer.webgl.FragmentShader');
goog.require('ol3.renderer.webgl.TileLayer'); goog.require('ol.renderer.webgl.TileLayer');
goog.require('ol3.renderer.webgl.VertexShader'); goog.require('ol.renderer.webgl.VertexShader');
goog.require('ol3.webgl.WebGLContextEventType'); goog.require('ol.webgl.WebGLContextEventType');
/** /**
* @typedef {{magFilter: number, minFilter: number, texture: WebGLTexture}} * @typedef {{magFilter: number, minFilter: number, texture: WebGLTexture}}
*/ */
ol3.renderer.webgl.TextureCacheEntry; ol.renderer.webgl.TextureCacheEntry;
/** /**
* @constructor * @constructor
* @extends {ol3.renderer.webgl.FragmentShader} * @extends {ol.renderer.webgl.FragmentShader}
* @see https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/brightnesscontrast.js * @see https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/brightnesscontrast.js
* @see https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/huesaturation.js * @see https://github.com/evanw/glfx.js/blob/master/src/filters/adjust/huesaturation.js
*/ */
ol3.renderer.webgl.map.shader.Fragment = function() { ol.renderer.webgl.map.shader.Fragment = function() {
goog.base(this, [ goog.base(this, [
'precision mediump float;', 'precision mediump float;',
'', '',
@@ -98,16 +98,16 @@ ol3.renderer.webgl.map.shader.Fragment = function() {
].join('\n')); ].join('\n'));
}; };
goog.inherits( goog.inherits(
ol3.renderer.webgl.map.shader.Fragment, ol3.renderer.webgl.FragmentShader); ol.renderer.webgl.map.shader.Fragment, ol.renderer.webgl.FragmentShader);
goog.addSingletonGetter(ol3.renderer.webgl.map.shader.Fragment); goog.addSingletonGetter(ol.renderer.webgl.map.shader.Fragment);
/** /**
* @constructor * @constructor
* @extends {ol3.renderer.webgl.VertexShader} * @extends {ol.renderer.webgl.VertexShader}
*/ */
ol3.renderer.webgl.map.shader.Vertex = function() { ol.renderer.webgl.map.shader.Vertex = function() {
goog.base(this, [ goog.base(this, [
'attribute vec2 aPosition;', 'attribute vec2 aPosition;',
'attribute vec2 aTexCoord;', 'attribute vec2 aTexCoord;',
@@ -121,18 +121,18 @@ ol3.renderer.webgl.map.shader.Vertex = function() {
].join('\n')); ].join('\n'));
}; };
goog.inherits( goog.inherits(
ol3.renderer.webgl.map.shader.Vertex, ol3.renderer.webgl.VertexShader); ol.renderer.webgl.map.shader.Vertex, ol.renderer.webgl.VertexShader);
goog.addSingletonGetter(ol3.renderer.webgl.map.shader.Vertex); goog.addSingletonGetter(ol.renderer.webgl.map.shader.Vertex);
/** /**
* @constructor * @constructor
* @extends {ol3.renderer.Map} * @extends {ol.renderer.Map}
* @param {Element} container Container. * @param {Element} container Container.
* @param {ol3.Map} map Map. * @param {ol.Map} map Map.
*/ */
ol3.renderer.webgl.Map = function(container, map) { ol.renderer.webgl.Map = function(container, map) {
goog.base(this, container, map); goog.base(this, container, map);
@@ -141,7 +141,7 @@ ol3.renderer.webgl.Map = function(container, map) {
* @inheritDoc * @inheritDoc
*/ */
this.logger = goog.debug.Logger.getLogger( this.logger = goog.debug.Logger.getLogger(
'ol3.renderer.webgl.maprenderer.' + goog.getUid(this)); 'ol.renderer.webgl.maprenderer.' + goog.getUid(this));
} }
/** /**
@@ -166,16 +166,16 @@ ol3.renderer.webgl.Map = function(container, map) {
}); });
goog.asserts.assert(!goog.isNull(this.gl_)); goog.asserts.assert(!goog.isNull(this.gl_));
goog.events.listen(this.canvas_, ol3.webgl.WebGLContextEventType.LOST, goog.events.listen(this.canvas_, ol.webgl.WebGLContextEventType.LOST,
this.handleWebGLContextLost, false, this); this.handleWebGLContextLost, false, this);
goog.events.listen(this.canvas_, ol3.webgl.WebGLContextEventType.RESTORED, goog.events.listen(this.canvas_, ol.webgl.WebGLContextEventType.RESTORED,
this.handleWebGLContextRestored, false, this); this.handleWebGLContextRestored, false, this);
/** /**
* @private * @private
* @type {ol3.Color} * @type {ol.Color}
*/ */
this.clearColor_ = new ol3.Color(1, 1, 1, 1); this.clearColor_ = new ol.Color(1, 1, 1, 1);
/** /**
* @private * @private
@@ -211,21 +211,21 @@ ol3.renderer.webgl.Map = function(container, map) {
/** /**
* @private * @private
* @type {Object.<string, ol3.renderer.webgl.TextureCacheEntry>} * @type {Object.<string, ol.renderer.webgl.TextureCacheEntry>}
*/ */
this.textureCache_ = {}; this.textureCache_ = {};
/** /**
* @private * @private
* @type {ol3.renderer.webgl.FragmentShader} * @type {ol.renderer.webgl.FragmentShader}
*/ */
this.fragmentShader_ = ol3.renderer.webgl.map.shader.Fragment.getInstance(); this.fragmentShader_ = ol.renderer.webgl.map.shader.Fragment.getInstance();
/** /**
* @private * @private
* @type {ol3.renderer.webgl.VertexShader} * @type {ol.renderer.webgl.VertexShader}
*/ */
this.vertexShader_ = ol3.renderer.webgl.map.shader.Vertex.getInstance(); this.vertexShader_ = ol.renderer.webgl.map.shader.Vertex.getInstance();
/** /**
* @private * @private
@@ -236,13 +236,13 @@ ol3.renderer.webgl.Map = function(container, map) {
this.initializeGL_(); this.initializeGL_();
}; };
goog.inherits(ol3.renderer.webgl.Map, ol3.renderer.Map); goog.inherits(ol.renderer.webgl.Map, ol.renderer.Map);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.addLayer = function(layer) { ol.renderer.webgl.Map.prototype.addLayer = function(layer) {
goog.base(this, 'addLayer', layer); goog.base(this, 'addLayer', layer);
if (layer.getVisible()) { if (layer.getVisible()) {
this.getMap().render(); this.getMap().render();
@@ -255,7 +255,7 @@ ol3.renderer.webgl.Map.prototype.addLayer = function(layer) {
* @param {number} magFilter Mag filter. * @param {number} magFilter Mag filter.
* @param {number} minFilter Min filter. * @param {number} minFilter Min filter.
*/ */
ol3.renderer.webgl.Map.prototype.bindImageTexture = ol.renderer.webgl.Map.prototype.bindImageTexture =
function(image, magFilter, minFilter) { function(image, magFilter, minFilter) {
var gl = this.getGL(); var gl = this.getGL();
var imageKey = image.src; var imageKey = image.src;
@@ -297,16 +297,16 @@ ol3.renderer.webgl.Map.prototype.bindImageTexture =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.canRotate = goog.functions.TRUE; ol.renderer.webgl.Map.prototype.canRotate = goog.functions.TRUE;
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.createLayerRenderer = function(layer) { ol.renderer.webgl.Map.prototype.createLayerRenderer = function(layer) {
var gl = this.getGL(); var gl = this.getGL();
if (layer instanceof ol3.TileLayer) { if (layer instanceof ol.TileLayer) {
return new ol3.renderer.webgl.TileLayer(this, layer); return new ol.renderer.webgl.TileLayer(this, layer);
} else { } else {
goog.asserts.assert(false); goog.asserts.assert(false);
return null; return null;
@@ -317,7 +317,7 @@ ol3.renderer.webgl.Map.prototype.createLayerRenderer = function(layer) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.disposeInternal = function() { ol.renderer.webgl.Map.prototype.disposeInternal = function() {
var gl = this.getGL(); var gl = this.getGL();
if (!gl.isContextLost()) { if (!gl.isContextLost()) {
goog.object.forEach(this.programCache_, function(program) { goog.object.forEach(this.programCache_, function(program) {
@@ -337,18 +337,18 @@ ol3.renderer.webgl.Map.prototype.disposeInternal = function() {
/** /**
* @return {WebGLRenderingContext} GL. * @return {WebGLRenderingContext} GL.
*/ */
ol3.renderer.webgl.Map.prototype.getGL = function() { ol.renderer.webgl.Map.prototype.getGL = function() {
return this.gl_; return this.gl_;
}; };
/** /**
* @param {ol3.renderer.webgl.FragmentShader} fragmentShaderObject * @param {ol.renderer.webgl.FragmentShader} fragmentShaderObject
* Fragment shader. * Fragment shader.
* @param {ol3.renderer.webgl.VertexShader} vertexShaderObject Vertex shader. * @param {ol.renderer.webgl.VertexShader} vertexShaderObject Vertex shader.
* @return {WebGLProgram} Program. * @return {WebGLProgram} Program.
*/ */
ol3.renderer.webgl.Map.prototype.getProgram = function( ol.renderer.webgl.Map.prototype.getProgram = function(
fragmentShaderObject, vertexShaderObject) { fragmentShaderObject, vertexShaderObject) {
var programKey = var programKey =
goog.getUid(fragmentShaderObject) + '/' + goog.getUid(vertexShaderObject); goog.getUid(fragmentShaderObject) + '/' + goog.getUid(vertexShaderObject);
@@ -375,10 +375,10 @@ ol3.renderer.webgl.Map.prototype.getProgram = function(
/** /**
* @param {ol3.renderer.webgl.Shader} shaderObject Shader object. * @param {ol.renderer.webgl.Shader} shaderObject Shader object.
* @return {WebGLShader} Shader. * @return {WebGLShader} Shader.
*/ */
ol3.renderer.webgl.Map.prototype.getShader = function(shaderObject) { ol.renderer.webgl.Map.prototype.getShader = function(shaderObject) {
var shaderKey = goog.getUid(shaderObject); var shaderKey = goog.getUid(shaderObject);
if (shaderKey in this.shaderCache_) { if (shaderKey in this.shaderCache_) {
return this.shaderCache_[shaderKey]; return this.shaderCache_[shaderKey];
@@ -404,9 +404,9 @@ ol3.renderer.webgl.Map.prototype.getShader = function(shaderObject) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.handleBackgroundColorChanged = function() { ol.renderer.webgl.Map.prototype.handleBackgroundColorChanged = function() {
var backgroundColor = this.getMap().getBackgroundColor(); var backgroundColor = this.getMap().getBackgroundColor();
this.clearColor_ = new ol3.Color( this.clearColor_ = new ol.Color(
backgroundColor.r / 255, backgroundColor.r / 255,
backgroundColor.g / 255, backgroundColor.g / 255,
backgroundColor.b / 255, backgroundColor.b / 255,
@@ -418,7 +418,7 @@ ol3.renderer.webgl.Map.prototype.handleBackgroundColorChanged = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.handleCenterChanged = function() { ol.renderer.webgl.Map.prototype.handleCenterChanged = function() {
goog.base(this, 'handleCenterChanged'); goog.base(this, 'handleCenterChanged');
this.getMap().render(); this.getMap().render();
}; };
@@ -428,7 +428,7 @@ ol3.renderer.webgl.Map.prototype.handleCenterChanged = function() {
* @param {goog.events.Event} event Event. * @param {goog.events.Event} event Event.
* @protected * @protected
*/ */
ol3.renderer.webgl.Map.prototype.handleLayerRendererChange = function(event) { ol.renderer.webgl.Map.prototype.handleLayerRendererChange = function(event) {
this.getMap().render(); this.getMap().render();
}; };
@@ -436,7 +436,7 @@ ol3.renderer.webgl.Map.prototype.handleLayerRendererChange = function(event) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.handleResolutionChanged = function() { ol.renderer.webgl.Map.prototype.handleResolutionChanged = function() {
goog.base(this, 'handleResolutionChanged'); goog.base(this, 'handleResolutionChanged');
this.getMap().render(); this.getMap().render();
}; };
@@ -445,7 +445,7 @@ ol3.renderer.webgl.Map.prototype.handleResolutionChanged = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.handleRotationChanged = function() { ol.renderer.webgl.Map.prototype.handleRotationChanged = function() {
goog.base(this, 'handleRotationChanged'); goog.base(this, 'handleRotationChanged');
this.getMap().render(); this.getMap().render();
}; };
@@ -454,7 +454,7 @@ ol3.renderer.webgl.Map.prototype.handleRotationChanged = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.handleSizeChanged = function() { ol.renderer.webgl.Map.prototype.handleSizeChanged = function() {
goog.base(this, 'handleSizeChanged'); goog.base(this, 'handleSizeChanged');
var size = this.getMap().getSize(); var size = this.getMap().getSize();
if (!goog.isDef(size)) { if (!goog.isDef(size)) {
@@ -474,7 +474,7 @@ ol3.renderer.webgl.Map.prototype.handleSizeChanged = function() {
* @param {goog.events.Event} event Event. * @param {goog.events.Event} event Event.
* @protected * @protected
*/ */
ol3.renderer.webgl.Map.prototype.handleWebGLContextLost = function(event) { ol.renderer.webgl.Map.prototype.handleWebGLContextLost = function(event) {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('WebGLContextLost'); this.logger.info('WebGLContextLost');
} }
@@ -493,7 +493,7 @@ ol3.renderer.webgl.Map.prototype.handleWebGLContextLost = function(event) {
/** /**
* @protected * @protected
*/ */
ol3.renderer.webgl.Map.prototype.handleWebGLContextRestored = function() { ol.renderer.webgl.Map.prototype.handleWebGLContextRestored = function() {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('WebGLContextRestored'); this.logger.info('WebGLContextRestored');
} }
@@ -505,7 +505,7 @@ ol3.renderer.webgl.Map.prototype.handleWebGLContextRestored = function() {
/** /**
* @private * @private
*/ */
ol3.renderer.webgl.Map.prototype.initializeGL_ = function() { ol.renderer.webgl.Map.prototype.initializeGL_ = function() {
var gl = this.gl_; var gl = this.gl_;
gl.activeTexture(goog.webgl.TEXTURE0); gl.activeTexture(goog.webgl.TEXTURE0);
gl.blendFunc(goog.webgl.SRC_ALPHA, goog.webgl.ONE_MINUS_SRC_ALPHA); gl.blendFunc(goog.webgl.SRC_ALPHA, goog.webgl.ONE_MINUS_SRC_ALPHA);
@@ -519,7 +519,7 @@ ol3.renderer.webgl.Map.prototype.initializeGL_ = function() {
* @param {Image} image Image. * @param {Image} image Image.
* @return {boolean} Is image texture loaded. * @return {boolean} Is image texture loaded.
*/ */
ol3.renderer.webgl.Map.prototype.isImageTextureLoaded = function(image) { ol.renderer.webgl.Map.prototype.isImageTextureLoaded = function(image) {
return image.src in this.textureCache_; return image.src in this.textureCache_;
}; };
@@ -527,7 +527,7 @@ ol3.renderer.webgl.Map.prototype.isImageTextureLoaded = function(image) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.removeLayer = function(layer) { ol.renderer.webgl.Map.prototype.removeLayer = function(layer) {
goog.base(this, 'removeLayer', layer); goog.base(this, 'removeLayer', layer);
if (layer.getVisible()) { if (layer.getVisible()) {
this.getMap().render(); this.getMap().render();
@@ -538,7 +538,7 @@ ol3.renderer.webgl.Map.prototype.removeLayer = function(layer) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.removeLayerRenderer = function(layer) { ol.renderer.webgl.Map.prototype.removeLayerRenderer = function(layer) {
var layerRenderer = goog.base(this, 'removeLayerRenderer', layer); var layerRenderer = goog.base(this, 'removeLayerRenderer', layer);
if (!goog.isNull(layerRenderer)) { if (!goog.isNull(layerRenderer)) {
var layerKey = goog.getUid(layer); var layerKey = goog.getUid(layer);
@@ -552,7 +552,7 @@ ol3.renderer.webgl.Map.prototype.removeLayerRenderer = function(layer) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.render = function() { ol.renderer.webgl.Map.prototype.render = function() {
if (!this.getMap().isDef()) { if (!this.getMap().isDef()) {
return false; return false;
@@ -630,7 +630,7 @@ ol3.renderer.webgl.Map.prototype.render = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.Map.prototype.setLayerRenderer = function( ol.renderer.webgl.Map.prototype.setLayerRenderer = function(
layer, layerRenderer) { layer, layerRenderer) {
goog.base(this, 'setLayerRenderer', layer, layerRenderer); goog.base(this, 'setLayerRenderer', layer, layerRenderer);
var layerKey = goog.getUid(layer); var layerKey = goog.getUid(layer);

View File

@@ -0,0 +1,81 @@
goog.provide('ol.renderer.webgl.FragmentShader');
goog.provide('ol.renderer.webgl.VertexShader');
goog.require('goog.functions');
goog.require('goog.webgl');
/**
* @constructor
* @param {string} source Source.
*/
ol.renderer.webgl.Shader = function(source) {
/**
* @private
* @type {string}
*/
this.source_ = source;
};
/**
* @return {number} Type.
*/
ol.renderer.webgl.Shader.prototype.getType = goog.abstractMethod;
/**
* @return {string} Source.
*/
ol.renderer.webgl.Shader.prototype.getSource = function() {
return this.source_;
};
/**
* @return {boolean} Is animated?
*/
ol.renderer.webgl.Shader.prototype.isAnimated = goog.functions.FALSE;
/**
* @constructor
* @extends {ol.renderer.webgl.Shader}
* @param {string} source Source.
*/
ol.renderer.webgl.FragmentShader = function(source) {
goog.base(this, source);
};
goog.inherits(ol.renderer.webgl.FragmentShader, ol.renderer.webgl.Shader);
/**
* @inheritDoc
*/
ol.renderer.webgl.FragmentShader.prototype.getType = function() {
return goog.webgl.FRAGMENT_SHADER;
};
/**
* @constructor
* @extends {ol.renderer.webgl.Shader}
* @param {string} source Source.
*/
ol.renderer.webgl.VertexShader = function(source) {
goog.base(this, source);
};
goog.inherits(ol.renderer.webgl.VertexShader, ol.renderer.webgl.Shader);
/**
* @inheritDoc
*/
ol.renderer.webgl.VertexShader.prototype.getType = function() {
return goog.webgl.VERTEX_SHADER;
};

View File

@@ -1,10 +1,10 @@
// FIXME large resolutions lead to too large framebuffers :-( // FIXME large resolutions lead to too large framebuffers :-(
// FIXME animated shaders! check in redraw // FIXME animated shaders! check in redraw
goog.provide('ol3.renderer.webgl.TileLayer'); goog.provide('ol.renderer.webgl.TileLayer');
goog.provide('ol3.renderer.webgl.tilelayerrenderer'); goog.provide('ol.renderer.webgl.tilelayerrenderer');
goog.provide('ol3.renderer.webgl.tilelayerrenderer.shader.Fragment'); goog.provide('ol.renderer.webgl.tilelayerrenderer.shader.Fragment');
goog.provide('ol3.renderer.webgl.tilelayerrenderer.shader.Vertex'); goog.provide('ol.renderer.webgl.tilelayerrenderer.shader.Vertex');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.asserts'); goog.require('goog.asserts');
@@ -14,22 +14,22 @@ goog.require('goog.object');
goog.require('goog.vec.Mat4'); goog.require('goog.vec.Mat4');
goog.require('goog.vec.Vec4'); goog.require('goog.vec.Vec4');
goog.require('goog.webgl'); goog.require('goog.webgl');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.MapEventType'); goog.require('ol.MapEventType');
goog.require('ol3.Size'); goog.require('ol.Size');
goog.require('ol3.TileLayer'); goog.require('ol.TileLayer');
goog.require('ol3.TileState'); goog.require('ol.TileState');
goog.require('ol3.renderer.webgl.FragmentShader'); goog.require('ol.renderer.webgl.FragmentShader');
goog.require('ol3.renderer.webgl.Layer'); goog.require('ol.renderer.webgl.Layer');
goog.require('ol3.renderer.webgl.VertexShader'); goog.require('ol.renderer.webgl.VertexShader');
/** /**
* @constructor * @constructor
* @extends {ol3.renderer.webgl.FragmentShader} * @extends {ol.renderer.webgl.FragmentShader}
*/ */
ol3.renderer.webgl.tilelayerrenderer.shader.Fragment = function() { ol.renderer.webgl.tilelayerrenderer.shader.Fragment = function() {
goog.base(this, [ goog.base(this, [
'precision mediump float;', 'precision mediump float;',
'', '',
@@ -43,17 +43,17 @@ ol3.renderer.webgl.tilelayerrenderer.shader.Fragment = function() {
].join('\n')); ].join('\n'));
}; };
goog.inherits( goog.inherits(
ol3.renderer.webgl.tilelayerrenderer.shader.Fragment, ol.renderer.webgl.tilelayerrenderer.shader.Fragment,
ol3.renderer.webgl.FragmentShader); ol.renderer.webgl.FragmentShader);
goog.addSingletonGetter(ol3.renderer.webgl.tilelayerrenderer.shader.Fragment); goog.addSingletonGetter(ol.renderer.webgl.tilelayerrenderer.shader.Fragment);
/** /**
* @constructor * @constructor
* @extends {ol3.renderer.webgl.VertexShader} * @extends {ol.renderer.webgl.VertexShader}
*/ */
ol3.renderer.webgl.tilelayerrenderer.shader.Vertex = function() { ol.renderer.webgl.tilelayerrenderer.shader.Vertex = function() {
goog.base(this, [ goog.base(this, [
'attribute vec2 aPosition;', 'attribute vec2 aPosition;',
'attribute vec2 aTexCoord;', 'attribute vec2 aTexCoord;',
@@ -71,19 +71,19 @@ ol3.renderer.webgl.tilelayerrenderer.shader.Vertex = function() {
].join('\n')); ].join('\n'));
}; };
goog.inherits( goog.inherits(
ol3.renderer.webgl.tilelayerrenderer.shader.Vertex, ol.renderer.webgl.tilelayerrenderer.shader.Vertex,
ol3.renderer.webgl.VertexShader); ol.renderer.webgl.VertexShader);
goog.addSingletonGetter(ol3.renderer.webgl.tilelayerrenderer.shader.Vertex); goog.addSingletonGetter(ol.renderer.webgl.tilelayerrenderer.shader.Vertex);
/** /**
* @constructor * @constructor
* @extends {ol3.renderer.webgl.Layer} * @extends {ol.renderer.webgl.Layer}
* @param {ol3.renderer.Map} mapRenderer Map renderer. * @param {ol.renderer.Map} mapRenderer Map renderer.
* @param {ol3.TileLayer} tileLayer Tile layer. * @param {ol.TileLayer} tileLayer Tile layer.
*/ */
ol3.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) { ol.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) {
goog.base(this, mapRenderer, tileLayer); goog.base(this, mapRenderer, tileLayer);
@@ -92,22 +92,22 @@ ol3.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) {
* @inheritDoc * @inheritDoc
*/ */
this.logger = goog.debug.Logger.getLogger( this.logger = goog.debug.Logger.getLogger(
'ol3.renderer.webgl.tilelayerrenderer.' + goog.getUid(this)); 'ol.renderer.webgl.tilelayerrenderer.' + goog.getUid(this));
} }
/** /**
* @private * @private
* @type {ol3.renderer.webgl.FragmentShader} * @type {ol.renderer.webgl.FragmentShader}
*/ */
this.fragmentShader_ = this.fragmentShader_ =
ol3.renderer.webgl.tilelayerrenderer.shader.Fragment.getInstance(); ol.renderer.webgl.tilelayerrenderer.shader.Fragment.getInstance();
/** /**
* @private * @private
* @type {ol3.renderer.webgl.VertexShader} * @type {ol.renderer.webgl.VertexShader}
*/ */
this.vertexShader_ = this.vertexShader_ =
ol3.renderer.webgl.tilelayerrenderer.shader.Vertex.getInstance(); ol.renderer.webgl.tilelayerrenderer.shader.Vertex.getInstance();
/** /**
* @private * @private
@@ -155,14 +155,14 @@ ol3.renderer.webgl.TileLayer = function(mapRenderer, tileLayer) {
this.matrix_ = goog.vec.Mat4.createNumber(); this.matrix_ = goog.vec.Mat4.createNumber();
}; };
goog.inherits(ol3.renderer.webgl.TileLayer, ol3.renderer.webgl.Layer); goog.inherits(ol.renderer.webgl.TileLayer, ol.renderer.webgl.Layer);
/** /**
* @param {number} framebufferDimension Framebuffer dimension. * @param {number} framebufferDimension Framebuffer dimension.
* @private * @private
*/ */
ol3.renderer.webgl.TileLayer.prototype.bindFramebuffer_ = ol.renderer.webgl.TileLayer.prototype.bindFramebuffer_ =
function(framebufferDimension) { function(framebufferDimension) {
var mapRenderer = this.getMapRenderer(); var mapRenderer = this.getMapRenderer();
@@ -175,7 +175,7 @@ ol3.renderer.webgl.TileLayer.prototype.bindFramebuffer_ =
this.logger.info('re-sizing framebuffer'); this.logger.info('re-sizing framebuffer');
} }
if (ol3.renderer.webgl.FREE_RESOURCES_IMMEDIATELY) { if (ol.renderer.webgl.FREE_RESOURCES_IMMEDIATELY) {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('freeing WebGL resources'); this.logger.info('freeing WebGL resources');
} }
@@ -187,7 +187,7 @@ ol3.renderer.webgl.TileLayer.prototype.bindFramebuffer_ =
var map = this.getMap(); var map = this.getMap();
goog.events.listenOnce( goog.events.listenOnce(
map, map,
ol3.MapEventType.POST_RENDER, ol.MapEventType.POST_RENDER,
goog.partial(function(gl, framebuffer, texture) { goog.partial(function(gl, framebuffer, texture) {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('freeing WebGL resources on postrender'); this.logger.info('freeing WebGL resources on postrender');
@@ -228,7 +228,7 @@ ol3.renderer.webgl.TileLayer.prototype.bindFramebuffer_ =
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.TileLayer.prototype.disposeInternal = function() { ol.renderer.webgl.TileLayer.prototype.disposeInternal = function() {
var mapRenderer = this.getMapRenderer(); var mapRenderer = this.getMapRenderer();
var gl = mapRenderer.getGL(); var gl = mapRenderer.getGL();
if (!gl.isContextLost()) { if (!gl.isContextLost()) {
@@ -241,18 +241,18 @@ ol3.renderer.webgl.TileLayer.prototype.disposeInternal = function() {
/** /**
* @return {ol3.TileLayer} Layer. * @return {ol.TileLayer} Layer.
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.TileLayer.prototype.getLayer = function() { ol.renderer.webgl.TileLayer.prototype.getLayer = function() {
return /** @type {ol3.TileLayer} */ goog.base(this, 'getLayer'); return /** @type {ol.TileLayer} */ goog.base(this, 'getLayer');
}; };
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.TileLayer.prototype.getMatrix = function() { ol.renderer.webgl.TileLayer.prototype.getMatrix = function() {
return this.matrix_; return this.matrix_;
}; };
@@ -260,7 +260,7 @@ ol3.renderer.webgl.TileLayer.prototype.getMatrix = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.TileLayer.prototype.getTexture = function() { ol.renderer.webgl.TileLayer.prototype.getTexture = function() {
return this.texture_; return this.texture_;
}; };
@@ -268,7 +268,7 @@ ol3.renderer.webgl.TileLayer.prototype.getTexture = function() {
/** /**
* @protected * @protected
*/ */
ol3.renderer.webgl.TileLayer.prototype.handleTileChange = function() { ol.renderer.webgl.TileLayer.prototype.handleTileChange = function() {
this.dispatchChangeEvent(); this.dispatchChangeEvent();
}; };
@@ -276,7 +276,7 @@ ol3.renderer.webgl.TileLayer.prototype.handleTileChange = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.TileLayer.prototype.handleWebGLContextLost = function() { ol.renderer.webgl.TileLayer.prototype.handleWebGLContextLost = function() {
this.locations_ = null; this.locations_ = null;
this.arrayBuffer_ = null; this.arrayBuffer_ = null;
this.texture_ = null; this.texture_ = null;
@@ -288,7 +288,7 @@ ol3.renderer.webgl.TileLayer.prototype.handleWebGLContextLost = function() {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.renderer.webgl.TileLayer.prototype.render = function() { ol.renderer.webgl.TileLayer.prototype.render = function() {
var animate = false; var animate = false;
@@ -318,13 +318,13 @@ ol3.renderer.webgl.TileLayer.prototype.render = function() {
tileBoundsSize.height * tileSize.height); tileBoundsSize.height * tileSize.height);
var framebufferDimension = var framebufferDimension =
Math.pow(2, Math.ceil(Math.log(maxDimension) / Math.log(2))); Math.pow(2, Math.ceil(Math.log(maxDimension) / Math.log(2)));
var framebufferExtentSize = new ol3.Size( var framebufferExtentSize = new ol.Size(
tileResolution * framebufferDimension, tileResolution * framebufferDimension,
tileResolution * framebufferDimension); tileResolution * framebufferDimension);
var origin = tileGrid.getOrigin(z); var origin = tileGrid.getOrigin(z);
var minX = origin.x + tileBounds.minX * tileSize.width * tileResolution; var minX = origin.x + tileBounds.minX * tileSize.width * tileResolution;
var minY = origin.y + tileBounds.minY * tileSize.height * tileResolution; var minY = origin.y + tileBounds.minY * tileSize.height * tileResolution;
var framebufferExtent = new ol3.Extent( var framebufferExtent = new ol.Extent(
minX, minX,
minY, minY,
minX + framebufferExtentSize.width, minX + framebufferExtentSize.width,
@@ -372,12 +372,12 @@ ol3.renderer.webgl.TileLayer.prototype.render = function() {
gl.uniform1i(this.locations_.uTexture, 0); gl.uniform1i(this.locations_.uTexture, 0);
/** /**
* @type {Object.<number, Object.<string, ol3.TileCoord>>} * @type {Object.<number, Object.<string, ol.TileCoord>>}
*/ */
var tilesToDrawByZ = {}; var tilesToDrawByZ = {};
/** /**
* @type {Array.<ol3.Tile>} * @type {Array.<ol.Tile>}
*/ */
var imagesToLoad = []; var imagesToLoad = [];
@@ -387,7 +387,7 @@ ol3.renderer.webgl.TileLayer.prototype.render = function() {
var tile = tileStore.getTile(tileCoord); var tile = tileStore.getTile(tileCoord);
if (goog.isNull(tile)) { if (goog.isNull(tile)) {
} else if (tile.getState() == ol3.TileState.LOADED) { } else if (tile.getState() == ol.TileState.LOADED) {
if (mapRenderer.isImageTextureLoaded(tile.getImage())) { if (mapRenderer.isImageTextureLoaded(tile.getImage())) {
tilesToDrawByZ[z][tileCoord.toString()] = tile; tilesToDrawByZ[z][tileCoord.toString()] = tile;
return; return;
@@ -416,7 +416,7 @@ ol3.renderer.webgl.TileLayer.prototype.render = function() {
} }
var tile = tileStore.getTile(tileCoord); var tile = tileStore.getTile(tileCoord);
if (!goog.isNull(tile) && if (!goog.isNull(tile) &&
tile.getState() == ol3.TileState.LOADED) { tile.getState() == ol.TileState.LOADED) {
if (!tilesToDrawByZ[z]) { if (!tilesToDrawByZ[z]) {
tilesToDrawByZ[z] = {}; tilesToDrawByZ[z] = {};
} }
@@ -478,7 +478,7 @@ ol3.renderer.webgl.TileLayer.prototype.render = function() {
if (!goog.array.isEmpty(imagesToLoad)) { if (!goog.array.isEmpty(imagesToLoad)) {
goog.events.listenOnce( goog.events.listenOnce(
map, map,
ol3.MapEventType.POST_RENDER, ol.MapEventType.POST_RENDER,
goog.partial(function(mapRenderer, imagesToLoad) { goog.partial(function(mapRenderer, imagesToLoad) {
if (goog.DEBUG) { if (goog.DEBUG) {
this.logger.info('uploading textures'); this.logger.info('uploading textures');

View File

@@ -1,15 +1,15 @@
goog.provide('ol3.renderer.webgl'); goog.provide('ol.renderer.webgl');
/** /**
* @define {boolean} Free resources immediately. * @define {boolean} Free resources immediately.
*/ */
ol3.renderer.webgl.FREE_RESOURCES_IMMEDIATELY = false; ol.renderer.webgl.FREE_RESOURCES_IMMEDIATELY = false;
/** /**
* @return {boolean} Is supported. * @return {boolean} Is supported.
*/ */
ol3.renderer.webgl.isSupported = function() { ol.renderer.webgl.isSupported = function() {
return 'WebGLRenderingContext' in goog.global; return 'WebGLRenderingContext' in goog.global;
}; };

View File

@@ -1,4 +1,4 @@
goog.provide('ol3.Size'); goog.provide('ol.Size');
goog.require('goog.math.Size'); goog.require('goog.math.Size');
@@ -10,16 +10,16 @@ goog.require('goog.math.Size');
* @param {number} width Width. * @param {number} width Width.
* @param {number} height Height. * @param {number} height Height.
*/ */
ol3.Size = function(width, height) { ol.Size = function(width, height) {
goog.base(this, width, height); goog.base(this, width, height);
}; };
goog.inherits(ol3.Size, goog.math.Size); goog.inherits(ol.Size, goog.math.Size);
/** /**
* @param {ol3.Size} size Size. * @param {ol.Size} size Size.
* @return {boolean} Equals. * @return {boolean} Equals.
*/ */
ol3.Size.prototype.equals = function(size) { ol.Size.prototype.equals = function(size) {
return this.width == size.width && this.height == size.height; return this.width == size.width && this.height == size.height;
}; };

96
src/ol/store.js Normal file
View File

@@ -0,0 +1,96 @@
goog.provide('ol.Store');
goog.require('goog.functions');
goog.require('ol.Attribution');
goog.require('ol.Extent');
goog.require('ol.Projection');
/**
* @constructor
* @param {ol.Projection} projection Projection.
* @param {ol.Extent=} opt_extent Extent.
* @param {Array.<ol.Attribution>=} opt_attributions Attributions.
*/
ol.Store = function(projection, opt_extent, opt_attributions) {
/**
* @private
* @type {ol.Projection}
*/
this.projection_ = projection;
/**
* @private
* @type {ol.Extent}
*/
this.extent_ = opt_extent || projection.getExtent();
/**
* @private
* @type {Array.<ol.Attribution>}
*/
this.attributions_ = opt_attributions || null;
};
/**
* @return {Array.<ol.Attribution>} Attributions.
*/
ol.Store.prototype.getAttributions = function() {
return this.attributions_;
};
/**
* @return {ol.Extent} Extent.
*/
ol.Store.prototype.getExtent = function() {
return this.extent_;
};
/**
* @return {ol.Projection} Projection.
*/
ol.Store.prototype.getProjection = function() {
return this.projection_;
};
/**
* @return {Array.<number>|undefined} Resolutions.
*/
ol.Store.prototype.getResolutions = goog.abstractMethod;
/**
* @return {boolean} Is ready.
*/
ol.Store.prototype.isReady = goog.functions.TRUE;
/**
* @param {Array.<ol.Attribution>} attributions Attributions.
*/
ol.Store.prototype.setAttributions = function(attributions) {
this.attributions_ = attributions;
};
/**
* @param {ol.Extent} extent Extent.
*/
ol.Store.prototype.setExtent = function(extent) {
this.extent_ = extent;
};
/**
* @param {ol.Projection} projection Projetion.
*/
ol.Store.prototype.setProjection = function(projection) {
this.projection_ = projection;
};

View File

@@ -1,17 +1,17 @@
goog.provide('ol3.Tile'); goog.provide('ol.Tile');
goog.provide('ol3.TileState'); goog.provide('ol.TileState');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.events'); goog.require('goog.events');
goog.require('goog.events.EventTarget'); goog.require('goog.events.EventTarget');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('ol3.TileCoord'); goog.require('ol.TileCoord');
/** /**
* @enum {number} * @enum {number}
*/ */
ol3.TileState = { ol.TileState = {
IDLE: 0, IDLE: 0,
LOADING: 1, LOADING: 1,
LOADED: 2, LOADED: 2,
@@ -23,16 +23,16 @@ ol3.TileState = {
/** /**
* @constructor * @constructor
* @extends {goog.events.EventTarget} * @extends {goog.events.EventTarget}
* @param {ol3.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @param {string} src Source. * @param {string} src Source.
* @param {?string} crossOrigin Cross origin. * @param {?string} crossOrigin Cross origin.
*/ */
ol3.Tile = function(tileCoord, src, crossOrigin) { ol.Tile = function(tileCoord, src, crossOrigin) {
goog.base(this); goog.base(this);
/** /**
* @type {ol3.TileCoord} * @type {ol.TileCoord}
*/ */
this.tileCoord = tileCoord; this.tileCoord = tileCoord;
@@ -44,9 +44,9 @@ ol3.Tile = function(tileCoord, src, crossOrigin) {
/** /**
* @private * @private
* @type {ol3.TileState} * @type {ol.TileState}
*/ */
this.state_ = ol3.TileState.IDLE; this.state_ = ol.TileState.IDLE;
/** /**
* @private * @private
@@ -70,13 +70,13 @@ ol3.Tile = function(tileCoord, src, crossOrigin) {
this.imageListenerKeys_ = null; this.imageListenerKeys_ = null;
}; };
goog.inherits(ol3.Tile, goog.events.EventTarget); goog.inherits(ol.Tile, goog.events.EventTarget);
/** /**
* @protected * @protected
*/ */
ol3.Tile.prototype.dispatchChangeEvent = function() { ol.Tile.prototype.dispatchChangeEvent = function() {
this.dispatchEvent(goog.events.EventType.CHANGE); this.dispatchEvent(goog.events.EventType.CHANGE);
}; };
@@ -85,7 +85,7 @@ ol3.Tile.prototype.dispatchChangeEvent = function() {
* @param {Object=} opt_context Object. * @param {Object=} opt_context Object.
* @return {Image} Image. * @return {Image} Image.
*/ */
ol3.Tile.prototype.getImage = function(opt_context) { ol.Tile.prototype.getImage = function(opt_context) {
if (goog.isDef(opt_context)) { if (goog.isDef(opt_context)) {
var image; var image;
var key = goog.getUid(opt_context); var key = goog.getUid(opt_context);
@@ -105,9 +105,9 @@ ol3.Tile.prototype.getImage = function(opt_context) {
/** /**
* @return {ol3.TileState} State. * @return {ol.TileState} State.
*/ */
ol3.Tile.prototype.getState = function() { ol.Tile.prototype.getState = function() {
return this.state_; return this.state_;
}; };
@@ -115,8 +115,8 @@ ol3.Tile.prototype.getState = function() {
/** /**
* @private * @private
*/ */
ol3.Tile.prototype.handleImageError_ = function() { ol.Tile.prototype.handleImageError_ = function() {
this.state_ = ol3.TileState.ERROR; this.state_ = ol.TileState.ERROR;
this.unlistenImage_(); this.unlistenImage_();
}; };
@@ -124,8 +124,8 @@ ol3.Tile.prototype.handleImageError_ = function() {
/** /**
* @private * @private
*/ */
ol3.Tile.prototype.handleImageLoad_ = function() { ol.Tile.prototype.handleImageLoad_ = function() {
this.state_ = ol3.TileState.LOADED; this.state_ = ol.TileState.LOADED;
this.unlistenImage_(); this.unlistenImage_();
this.dispatchChangeEvent(); this.dispatchChangeEvent();
}; };
@@ -134,9 +134,9 @@ ol3.Tile.prototype.handleImageLoad_ = function() {
/** /**
* Load. * Load.
*/ */
ol3.Tile.prototype.load = function() { ol.Tile.prototype.load = function() {
if (this.state_ == ol3.TileState.IDLE) { if (this.state_ == ol.TileState.IDLE) {
this.state_ = ol3.TileState.LOADING; this.state_ = ol.TileState.LOADING;
goog.asserts.assert(goog.isNull(this.imageListenerKeys_)); goog.asserts.assert(goog.isNull(this.imageListenerKeys_));
this.imageListenerKeys_ = [ this.imageListenerKeys_ = [
goog.events.listenOnce(this.image_, goog.events.EventType.ERROR, goog.events.listenOnce(this.image_, goog.events.EventType.ERROR,
@@ -152,7 +152,7 @@ ol3.Tile.prototype.load = function() {
/** /**
* @private * @private
*/ */
ol3.Tile.prototype.unlistenImage_ = function() { ol.Tile.prototype.unlistenImage_ = function() {
goog.asserts.assert(!goog.isNull(this.imageListenerKeys_)); goog.asserts.assert(!goog.isNull(this.imageListenerKeys_));
goog.array.forEach(this.imageListenerKeys_, goog.events.unlistenByKey); goog.array.forEach(this.imageListenerKeys_, goog.events.unlistenByKey);
this.imageListenerKeys_ = null; this.imageListenerKeys_ = null;

View File

@@ -1,32 +1,32 @@
goog.provide('ol3.TileBounds'); goog.provide('ol.TileBounds');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('ol3.Rectangle'); goog.require('ol.Rectangle');
goog.require('ol3.TileCoord'); goog.require('ol.TileCoord');
/** /**
* @constructor * @constructor
* @extends {ol3.Rectangle} * @extends {ol.Rectangle}
* @param {number} minX Minimum X. * @param {number} minX Minimum X.
* @param {number} minY Minimum Y. * @param {number} minY Minimum Y.
* @param {number} maxX Maximum X. * @param {number} maxX Maximum X.
* @param {number} maxY Maximum Y. * @param {number} maxY Maximum Y.
*/ */
ol3.TileBounds = function(minX, minY, maxX, maxY) { ol.TileBounds = function(minX, minY, maxX, maxY) {
goog.base(this, minX, minY, maxX, maxY); goog.base(this, minX, minY, maxX, maxY);
}; };
goog.inherits(ol3.TileBounds, ol3.Rectangle); goog.inherits(ol.TileBounds, ol.Rectangle);
/** /**
* @param {...ol3.TileCoord} var_args Tile coordinates. * @param {...ol.TileCoord} var_args Tile coordinates.
* @return {!ol3.TileBounds} Bounding tile box. * @return {!ol.TileBounds} Bounding tile box.
*/ */
ol3.TileBounds.boundingTileBounds = function(var_args) { ol.TileBounds.boundingTileBounds = function(var_args) {
var tileCoord0 = arguments[0]; var tileCoord0 = arguments[0];
var tileBounds = new ol3.TileBounds(tileCoord0.x, tileCoord0.y, var tileBounds = new ol.TileBounds(tileCoord0.x, tileCoord0.y,
tileCoord0.x, tileCoord0.y); tileCoord0.x, tileCoord0.y);
var i; var i;
for (i = 1; i < arguments.length; ++i) { for (i = 1; i < arguments.length; ++i) {
@@ -42,38 +42,38 @@ ol3.TileBounds.boundingTileBounds = function(var_args) {
/** /**
* @return {ol3.TileBounds} Clone. * @return {ol.TileBounds} Clone.
*/ */
ol3.TileBounds.prototype.clone = function() { ol.TileBounds.prototype.clone = function() {
return new ol3.TileBounds(this.minX, this.minY, this.maxX, this.maxY); return new ol.TileBounds(this.minX, this.minY, this.maxX, this.maxY);
}; };
/** /**
* @param {ol3.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @return {boolean} Contains tile coordinate. * @return {boolean} Contains tile coordinate.
*/ */
ol3.TileBounds.prototype.contains = function(tileCoord) { ol.TileBounds.prototype.contains = function(tileCoord) {
return this.minX <= tileCoord.x && tileCoord.x <= this.maxX && return this.minX <= tileCoord.x && tileCoord.x <= this.maxX &&
this.minY <= tileCoord.y && tileCoord.y <= this.maxY; this.minY <= tileCoord.y && tileCoord.y <= this.maxY;
}; };
/** /**
* @param {ol3.TileBounds} tileBounds Tile bounds. * @param {ol.TileBounds} tileBounds Tile bounds.
* @return {boolean} Contains. * @return {boolean} Contains.
*/ */
ol3.TileBounds.prototype.containsTileBounds = function(tileBounds) { ol.TileBounds.prototype.containsTileBounds = function(tileBounds) {
return this.minX <= tileBounds.minX && tileBounds.maxX <= this.maxX && return this.minX <= tileBounds.minX && tileBounds.maxX <= this.maxX &&
this.minY <= tileBounds.minY && tileBounds.minY <= this.maxY; this.minY <= tileBounds.minY && tileBounds.minY <= this.maxY;
}; };
/** /**
* @param {ol3.TileBounds} tileBounds Tile bounds. * @param {ol.TileBounds} tileBounds Tile bounds.
* @return {boolean} Equals. * @return {boolean} Equals.
*/ */
ol3.TileBounds.prototype.equals = function(tileBounds) { ol.TileBounds.prototype.equals = function(tileBounds) {
return this.minX == tileBounds.minX && tileBounds.maxX == this.maxX && return this.minX == tileBounds.minX && tileBounds.maxX == this.maxX &&
this.minY == tileBounds.minY && tileBounds.minY == this.minY; this.minY == tileBounds.minY && tileBounds.minY == this.minY;
}; };
@@ -81,15 +81,15 @@ ol3.TileBounds.prototype.equals = function(tileBounds) {
/** /**
* @param {number} z Z. * @param {number} z Z.
* @param {function(this: T, ol3.TileCoord)} f Callback. * @param {function(this: T, ol.TileCoord)} f Callback.
* @param {T=} opt_obj The object to be used for the value of 'this' within f. * @param {T=} opt_obj The object to be used for the value of 'this' within f.
* @template T * @template T
*/ */
ol3.TileBounds.prototype.forEachTileCoord = function(z, f, opt_obj) { ol.TileBounds.prototype.forEachTileCoord = function(z, f, opt_obj) {
var x, y; var x, y;
for (x = this.minX; x <= this.maxX; ++x) { for (x = this.minX; x <= this.maxX; ++x) {
for (y = this.minY; y <= this.maxY; ++y) { for (y = this.minY; y <= this.maxY; ++y) {
f.call(opt_obj, new ol3.TileCoord(z, x, y)); f.call(opt_obj, new ol.TileCoord(z, x, y));
} }
} }
}; };
@@ -99,7 +99,7 @@ ol3.TileBounds.prototype.forEachTileCoord = function(z, f, opt_obj) {
* @inheritDoc * @inheritDoc
* @return {number} Height. * @return {number} Height.
*/ */
ol3.TileBounds.prototype.getHeight = function() { ol.TileBounds.prototype.getHeight = function() {
return this.maxY - this.minY + 1; return this.maxY - this.minY + 1;
}; };
@@ -108,6 +108,6 @@ ol3.TileBounds.prototype.getHeight = function() {
* @inheritDoc * @inheritDoc
* @return {number} Width. * @return {number} Width.
*/ */
ol3.TileBounds.prototype.getWidth = function() { ol.TileBounds.prototype.getWidth = function() {
return this.maxX - this.minX + 1; return this.maxX - this.minX + 1;
}; };

102
src/ol/tilebounds_test.js Normal file
View File

@@ -0,0 +1,102 @@
goog.require('goog.testing.jsunit');
goog.require('ol.TileBounds');
function testClone() {
var tileBounds = new ol.TileBounds(1, 2, 3, 4);
var clonedTileBounds = tileBounds.clone();
assertTrue(clonedTileBounds instanceof ol.TileBounds);
assertFalse(clonedTileBounds === tileBounds);
assertEquals(tileBounds.minX, clonedTileBounds.minX);
assertEquals(tileBounds.minY, clonedTileBounds.minY);
assertEquals(tileBounds.maxX, clonedTileBounds.maxX);
assertEquals(tileBounds.maxY, clonedTileBounds.maxY);
}
function testContains() {
var tileBounds = new ol.TileBounds(1, 1, 3, 3);
assertFalse(tileBounds.contains(new ol.TileCoord(0, 0, 0)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 0, 1)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 0, 2)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 0, 3)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 0, 4)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 1, 0)));
assertTrue(tileBounds.contains(new ol.TileCoord(0, 1, 1)));
assertTrue(tileBounds.contains(new ol.TileCoord(0, 1, 2)));
assertTrue(tileBounds.contains(new ol.TileCoord(0, 1, 3)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 1, 4)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 2, 0)));
assertTrue(tileBounds.contains(new ol.TileCoord(0, 2, 1)));
assertTrue(tileBounds.contains(new ol.TileCoord(0, 2, 2)));
assertTrue(tileBounds.contains(new ol.TileCoord(0, 2, 3)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 2, 4)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 3, 0)));
assertTrue(tileBounds.contains(new ol.TileCoord(0, 3, 1)));
assertTrue(tileBounds.contains(new ol.TileCoord(0, 3, 2)));
assertTrue(tileBounds.contains(new ol.TileCoord(0, 3, 3)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 3, 4)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 4, 0)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 4, 1)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 4, 2)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 4, 3)));
assertFalse(tileBounds.contains(new ol.TileCoord(0, 4, 4)));
}
function testBoundingTileBounds() {
var tileBounds = new ol.TileBounds.boundingTileBounds(
new ol.TileCoord(3, 1, 3),
new ol.TileCoord(3, 2, 0));
assertEquals(1, tileBounds.minX);
assertEquals(0, tileBounds.minY);
assertEquals(2, tileBounds.maxX);
assertEquals(3, tileBounds.maxY);
}
function testBoundingTileBoundsMixedZ() {
assertThrows(function() {
var tileBounds = new ol.TileBounds.boundingTileBounds(
new ol.TileCoord(3, 1, 3),
new ol.TileCoord(4, 2, 0));
});
}
function testForEachTileCoord() {
var tileBounds = new ol.TileBounds(0, 2, 1, 3);
var tileCoords = [];
tileBounds.forEachTileCoord(5, function(tileCoord) {
tileCoords.push(tileCoord.clone());
});
assertEquals(4, tileCoords.length);
assertEquals(5, tileCoords[0].z);
assertEquals(0, tileCoords[0].x);
assertEquals(2, tileCoords[0].y);
assertEquals(5, tileCoords[1].z);
assertEquals(0, tileCoords[1].x);
assertEquals(3, tileCoords[1].y);
assertEquals(5, tileCoords[2].z);
assertEquals(1, tileCoords[2].x);
assertEquals(2, tileCoords[2].y);
assertEquals(5, tileCoords[3].z);
assertEquals(1, tileCoords[3].x);
assertEquals(3, tileCoords[3].y);
}
function testSize() {
var tileBounds = new ol.TileBounds(0, 1, 2, 4);
var size = tileBounds.getSize();
assertEquals(3, size.width);
assertEquals(4, size.height);
}

View File

@@ -1,13 +1,13 @@
goog.provide('ol3.TileCoord'); goog.provide('ol.TileCoord');
goog.require('goog.array'); goog.require('goog.array');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
/** /**
* @enum {number} * @enum {number}
*/ */
ol3.QuadKeyCharCode = { ol.QuadKeyCharCode = {
ZERO: '0'.charCodeAt(0), ZERO: '0'.charCodeAt(0),
ONE: '1'.charCodeAt(0), ONE: '1'.charCodeAt(0),
TWO: '2'.charCodeAt(0), TWO: '2'.charCodeAt(0),
@@ -18,12 +18,12 @@ ol3.QuadKeyCharCode = {
/** /**
* @constructor * @constructor
* @extends {ol3.Coordinate} * @extends {ol.Coordinate}
* @param {number} z Z. * @param {number} z Z.
* @param {number} x X. * @param {number} x X.
* @param {number} y Y. * @param {number} y Y.
*/ */
ol3.TileCoord = function(z, x, y) { ol.TileCoord = function(z, x, y) {
goog.base(this, x, y); goog.base(this, x, y);
@@ -33,61 +33,61 @@ ol3.TileCoord = function(z, x, y) {
this.z = z; this.z = z;
}; };
goog.inherits(ol3.TileCoord, ol3.Coordinate); goog.inherits(ol.TileCoord, ol.Coordinate);
/** /**
* @param {string} quadKey Quad key. * @param {string} quadKey Quad key.
* @return {ol3.TileCoord} Tile coordinate. * @return {ol.TileCoord} Tile coordinate.
*/ */
ol3.TileCoord.createFromQuadKey = function(quadKey) { ol.TileCoord.createFromQuadKey = function(quadKey) {
var z = quadKey.length, x = 0, y = 0; var z = quadKey.length, x = 0, y = 0;
var mask = 1 << (z - 1); var mask = 1 << (z - 1);
var i; var i;
for (i = 0; i < z; ++i) { for (i = 0; i < z; ++i) {
switch (quadKey.charCodeAt(i)) { switch (quadKey.charCodeAt(i)) {
case ol3.QuadKeyCharCode.ONE: case ol.QuadKeyCharCode.ONE:
x += mask; x += mask;
break; break;
case ol3.QuadKeyCharCode.TWO: case ol.QuadKeyCharCode.TWO:
y += mask; y += mask;
break; break;
case ol3.QuadKeyCharCode.THREE: case ol.QuadKeyCharCode.THREE:
x += mask; x += mask;
y += mask; y += mask;
break; break;
} }
mask >>= 1; mask >>= 1;
} }
return new ol3.TileCoord(z, x, y); return new ol.TileCoord(z, x, y);
}; };
/** /**
* @param {string} str String. * @param {string} str String.
* @return {ol3.TileCoord} Tile coord. * @return {ol.TileCoord} Tile coord.
*/ */
ol3.TileCoord.createFromString = function(str) { ol.TileCoord.createFromString = function(str) {
var v = str.split('/'); var v = str.split('/');
v = goog.array.map(v, function(e, i, a) { v = goog.array.map(v, function(e, i, a) {
return parseInt(e, 10); return parseInt(e, 10);
}); });
return new ol3.TileCoord(v[0], v[1], v[2]); return new ol.TileCoord(v[0], v[1], v[2]);
}; };
/** /**
* @return {ol3.TileCoord} Clone. * @return {ol.TileCoord} Clone.
*/ */
ol3.TileCoord.prototype.clone = function() { ol.TileCoord.prototype.clone = function() {
return new ol3.TileCoord(this.z, this.x, this.y); return new ol.TileCoord(this.z, this.x, this.y);
}; };
/** /**
* @return {number} Hash. * @return {number} Hash.
*/ */
ol3.TileCoord.prototype.hash = function() { ol.TileCoord.prototype.hash = function() {
return (this.x << this.z) + this.y; return (this.x << this.z) + this.y;
}; };
@@ -95,12 +95,12 @@ ol3.TileCoord.prototype.hash = function() {
/** /**
* @return {string} Quad key. * @return {string} Quad key.
*/ */
ol3.TileCoord.prototype.quadKey = function() { ol.TileCoord.prototype.quadKey = function() {
var digits = new Array(this.z); var digits = new Array(this.z);
var mask = 1 << (this.z - 1); var mask = 1 << (this.z - 1);
var i, charCode; var i, charCode;
for (i = 0; i < this.z; ++i) { for (i = 0; i < this.z; ++i) {
charCode = ol3.QuadKeyCharCode.ZERO; charCode = ol.QuadKeyCharCode.ZERO;
if (this.x & mask) { if (this.x & mask) {
charCode += 1; charCode += 1;
} }
@@ -117,6 +117,6 @@ ol3.TileCoord.prototype.quadKey = function() {
/** /**
* @return {string} String. * @return {string} String.
*/ */
ol3.TileCoord.prototype.toString = function() { ol.TileCoord.prototype.toString = function() {
return [this.z, this.x, this.y].join('/'); return [this.z, this.x, this.y].join('/');
}; };

View File

@@ -1,9 +1,9 @@
goog.require('goog.testing.jsunit'); goog.require('goog.testing.jsunit');
goog.require('ol3.TileCoord'); goog.require('ol.TileCoord');
function testConstructorOrderZXY() { function testConstructorOrderZXY() {
var tc1 = new ol3.TileCoord(1, 2, 3); var tc1 = new ol.TileCoord(1, 2, 3);
assertEquals(1, tc1.z); assertEquals(1, tc1.z);
assertEquals(2, tc1.x); assertEquals(2, tc1.x);
assertEquals(3, tc1.y); assertEquals(3, tc1.y);
@@ -11,7 +11,7 @@ function testConstructorOrderZXY() {
function testCreateFromQuadKey() { function testCreateFromQuadKey() {
var tileCoord = ol3.TileCoord.createFromQuadKey('213'); var tileCoord = ol.TileCoord.createFromQuadKey('213');
assertEquals(3, tileCoord.z); assertEquals(3, tileCoord.z);
assertEquals(3, tileCoord.x); assertEquals(3, tileCoord.x);
assertEquals(5, tileCoord.y); assertEquals(5, tileCoord.y);
@@ -20,7 +20,7 @@ function testCreateFromQuadKey() {
function testCreateFromString() { function testCreateFromString() {
var str = '1/2/3'; var str = '1/2/3';
var tc = ol3.TileCoord.createFromString(str); var tc = ol.TileCoord.createFromString(str);
assertEquals(1, tc.z); assertEquals(1, tc.z);
assertEquals(2, tc.x); assertEquals(2, tc.x);
assertEquals(3, tc.y); assertEquals(3, tc.y);
@@ -28,12 +28,12 @@ function testCreateFromString() {
function testQuadKey() { function testQuadKey() {
assertEquals('213', (new ol3.TileCoord(3, 3, 5)).quadKey()); assertEquals('213', (new ol.TileCoord(3, 3, 5)).quadKey());
} }
function testHash() { function testHash() {
var tc1 = new ol3.TileCoord(3, 2, 1); var tc1 = new ol.TileCoord(3, 2, 1);
var tc2 = new ol3.TileCoord(3, 1, 1); var tc2 = new ol.TileCoord(3, 1, 1);
assertTrue(tc1.hash() != tc2.hash()); assertTrue(tc1.hash() != tc2.hash());
} }

View File

@@ -0,0 +1,71 @@
goog.provide('ol.TileCoverageArea');
goog.require('ol.CoverageArea');
goog.require('ol.Extent');
goog.require('ol.TileGrid');
/**
* @constructor
* @extends {ol.CoverageArea}
* @param {ol.TileGrid} tileGrid Tile grid.
* @param {ol.Extent} extent Extent.
* @param {number} minZ Minimum Z.
* @param {number} maxZ Maximum Z.
*/
ol.TileCoverageArea = function(tileGrid, extent, minZ, maxZ) {
goog.base(this, extent);
/**
* @private
* @type {ol.TileGrid}
*/
this.tileGrid_ = tileGrid;
/**
* @private
* @type {number}
*/
this.minZ_ = minZ;
/**
* @private
* @type {number}
*/
this.maxZ_ = maxZ;
};
goog.inherits(ol.TileCoverageArea, ol.CoverageArea);
/**
* @inheritDoc
*/
ol.TileCoverageArea.prototype.intersectsExtentAndResolution =
function(extent, resolution) {
var z = this.tileGrid_.getZForResolution(resolution);
return this.intersectsExtentAndZ(extent, z);
};
/**
* @param {ol.Extent} extent Extent.
* @param {number} z Z.
* @return {boolean} Intersects.
*/
ol.TileCoverageArea.prototype.intersectsExtentAndZ = function(extent, z) {
return this.minZ_ <= z && z <= this.maxZ_ && this.intersectsExtent(extent);
};
/**
* @param {ol.TransformFunction} transformFn Transform.
* @return {ol.TileCoverageArea} Transformed tile coverage area.
*/
ol.TileCoverageArea.prototype.transform = function(transformFn) {
var extent = this.extent.transform(transformFn);
return new ol.TileCoverageArea(
this.tileGrid_, extent, this.minZ_, this.maxZ_);
};

View File

@@ -1,27 +1,27 @@
// FIXME cope with tile grids whose minium zoom is not zero // FIXME cope with tile grids whose minium zoom is not zero
goog.provide('ol3.TileGrid'); goog.provide('ol.TileGrid');
goog.require('goog.array'); goog.require('goog.array');
goog.require('goog.asserts'); goog.require('goog.asserts');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.Extent'); goog.require('ol.Extent');
goog.require('ol3.PixelBounds'); goog.require('ol.PixelBounds');
goog.require('ol3.Size'); goog.require('ol.Size');
goog.require('ol3.TileBounds'); goog.require('ol.TileBounds');
goog.require('ol3.TileCoord'); goog.require('ol.TileCoord');
goog.require('ol3.array'); goog.require('ol.array');
/** /**
* @constructor * @constructor
* @param {!Array.<number>} resolutions Resolutions. * @param {!Array.<number>} resolutions Resolutions.
* @param {ol3.Extent} extent Extent. * @param {ol.Extent} extent Extent.
* @param {ol3.Coordinate|!Array.<ol3.Coordinate>} origin Origin. * @param {ol.Coordinate|!Array.<ol.Coordinate>} origin Origin.
* @param {ol3.Size=} opt_tileSize Tile size. * @param {ol.Size=} opt_tileSize Tile size.
*/ */
ol3.TileGrid = function(resolutions, extent, origin, opt_tileSize) { ol.TileGrid = function(resolutions, extent, origin, opt_tileSize) {
/** /**
* @private * @private
@@ -40,23 +40,23 @@ ol3.TileGrid = function(resolutions, extent, origin, opt_tileSize) {
/** /**
* @private * @private
* @type {ol3.Extent} * @type {ol.Extent}
*/ */
this.extent_ = extent; this.extent_ = extent;
/** /**
* @private * @private
* @type {ol3.Coordinate} * @type {ol.Coordinate}
*/ */
this.origin_ = null; this.origin_ = null;
/** /**
* @private * @private
* @type {Array.<ol3.Coordinate>} * @type {Array.<ol.Coordinate>}
*/ */
this.origins_ = null; this.origins_ = null;
if (origin instanceof ol3.Coordinate) { if (origin instanceof ol.Coordinate) {
this.origin_ = origin; this.origin_ = origin;
} else if (goog.isArray(origin)) { } else if (goog.isArray(origin)) {
goog.asserts.assert(origin.length == this.numResolutions_); goog.asserts.assert(origin.length == this.numResolutions_);
@@ -67,21 +67,21 @@ ol3.TileGrid = function(resolutions, extent, origin, opt_tileSize) {
/** /**
* @private * @private
* @type {ol3.Size} * @type {ol.Size}
*/ */
this.tileSize_ = opt_tileSize || new ol3.Size(256, 256); this.tileSize_ = opt_tileSize || new ol.Size(256, 256);
}; };
/** /**
* @param {ol3.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @param {function(this: T, number, ol3.TileBounds): boolean} callback * @param {function(this: T, number, ol.TileBounds): boolean} callback
* Callback. * Callback.
* @param {T=} opt_obj Object. * @param {T=} opt_obj Object.
* @template T * @template T
*/ */
ol3.TileGrid.prototype.forEachTileCoordParentTileBounds = ol.TileGrid.prototype.forEachTileCoordParentTileBounds =
function(tileCoord, callback, opt_obj) { function(tileCoord, callback, opt_obj) {
var tileCoordExtent = this.getTileCoordExtent(tileCoord); var tileCoordExtent = this.getTileCoordExtent(tileCoord);
var z = tileCoord.z - 1; var z = tileCoord.z - 1;
@@ -96,18 +96,18 @@ ol3.TileGrid.prototype.forEachTileCoordParentTileBounds =
/** /**
* @return {ol3.Extent} Extent. * @return {ol.Extent} Extent.
*/ */
ol3.TileGrid.prototype.getExtent = function() { ol.TileGrid.prototype.getExtent = function() {
return this.extent_; return this.extent_;
}; };
/** /**
* @param {number} z Z. * @param {number} z Z.
* @return {ol3.Coordinate} Origin. * @return {ol.Coordinate} Origin.
*/ */
ol3.TileGrid.prototype.getOrigin = function(z) { ol.TileGrid.prototype.getOrigin = function(z) {
if (!goog.isNull(this.origin_)) { if (!goog.isNull(this.origin_)) {
return this.origin_; return this.origin_;
} else { } else {
@@ -119,22 +119,22 @@ ol3.TileGrid.prototype.getOrigin = function(z) {
/** /**
* @param {ol3.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @param {number} resolution Resolution. * @param {number} resolution Resolution.
* @return {ol3.PixelBounds} Pixel bounds. * @return {ol.PixelBounds} Pixel bounds.
*/ */
ol3.TileGrid.prototype.getPixelBoundsForTileCoordAndResolution = function( ol.TileGrid.prototype.getPixelBoundsForTileCoordAndResolution = function(
tileCoord, resolution) { tileCoord, resolution) {
var scale = resolution / this.getResolution(tileCoord.z); var scale = resolution / this.getResolution(tileCoord.z);
var tileSize = this.getTileSize(); var tileSize = this.getTileSize();
tileSize = new ol3.Size(tileSize.width / scale, tileSize = new ol.Size(tileSize.width / scale,
tileSize.height / scale); tileSize.height / scale);
var minX, maxX, minY, maxY; var minX, maxX, minY, maxY;
minX = Math.round(tileCoord.x * tileSize.width); minX = Math.round(tileCoord.x * tileSize.width);
maxX = Math.round((tileCoord.x + 1) * tileSize.width); maxX = Math.round((tileCoord.x + 1) * tileSize.width);
minY = Math.round(tileCoord.y * tileSize.height); minY = Math.round(tileCoord.y * tileSize.height);
maxY = Math.round((tileCoord.y + 1) * tileSize.height); maxY = Math.round((tileCoord.y + 1) * tileSize.height);
return new ol3.PixelBounds(minX, minY, maxX, maxY); return new ol.PixelBounds(minX, minY, maxX, maxY);
}; };
@@ -142,7 +142,7 @@ ol3.TileGrid.prototype.getPixelBoundsForTileCoordAndResolution = function(
* @param {number} z Z. * @param {number} z Z.
* @return {number} Resolution. * @return {number} Resolution.
*/ */
ol3.TileGrid.prototype.getResolution = function(z) { ol.TileGrid.prototype.getResolution = function(z) {
goog.asserts.assert(0 <= z && z < this.numResolutions_); goog.asserts.assert(0 <= z && z < this.numResolutions_);
return this.resolutions_[z]; return this.resolutions_[z];
}; };
@@ -151,17 +151,17 @@ ol3.TileGrid.prototype.getResolution = function(z) {
/** /**
* @return {Array.<number>} Resolutions. * @return {Array.<number>} Resolutions.
*/ */
ol3.TileGrid.prototype.getResolutions = function() { ol.TileGrid.prototype.getResolutions = function() {
return this.resolutions_; return this.resolutions_;
}; };
/** /**
* @param {number} z Z. * @param {number} z Z.
* @param {ol3.TileBounds} tileBounds Tile bounds. * @param {ol.TileBounds} tileBounds Tile bounds.
* @return {ol3.Extent} Extent. * @return {ol.Extent} Extent.
*/ */
ol3.TileGrid.prototype.getTileBoundsExtent = function(z, tileBounds) { ol.TileGrid.prototype.getTileBoundsExtent = function(z, tileBounds) {
var origin = this.getOrigin(z); var origin = this.getOrigin(z);
var resolution = this.getResolution(z); var resolution = this.getResolution(z);
var tileSize = this.tileSize_; var tileSize = this.tileSize_;
@@ -169,55 +169,55 @@ ol3.TileGrid.prototype.getTileBoundsExtent = function(z, tileBounds) {
var minY = origin.y + tileBounds.minY * tileSize.height * resolution; var minY = origin.y + tileBounds.minY * tileSize.height * resolution;
var maxX = origin.x + (tileBounds.maxX + 1) * tileSize.width * resolution; var maxX = origin.x + (tileBounds.maxX + 1) * tileSize.width * resolution;
var maxY = origin.y + (tileBounds.maxY + 1) * tileSize.height * resolution; var maxY = origin.y + (tileBounds.maxY + 1) * tileSize.height * resolution;
return new ol3.Extent(minX, minY, maxX, maxY); return new ol.Extent(minX, minY, maxX, maxY);
}; };
/** /**
* @param {ol3.Extent} extent Extent. * @param {ol.Extent} extent Extent.
* @param {number} resolution Resolution. * @param {number} resolution Resolution.
* @return {ol3.TileBounds} Tile bounds. * @return {ol.TileBounds} Tile bounds.
*/ */
ol3.TileGrid.prototype.getTileBoundsForExtentAndResolution = function( ol.TileGrid.prototype.getTileBoundsForExtentAndResolution = function(
extent, resolution) { extent, resolution) {
var min = this.getTileCoordForCoordAndResolution( var min = this.getTileCoordForCoordAndResolution(
new ol3.Coordinate(extent.minX, extent.minY), resolution); new ol.Coordinate(extent.minX, extent.minY), resolution);
var max = this.getTileCoordForCoordAndResolution( var max = this.getTileCoordForCoordAndResolution(
new ol3.Coordinate(extent.maxX, extent.maxY), resolution); new ol.Coordinate(extent.maxX, extent.maxY), resolution);
return new ol3.TileBounds(min.x, min.y, max.x, max.y); return new ol.TileBounds(min.x, min.y, max.x, max.y);
}; };
/** /**
* @param {ol3.Extent} extent Extent. * @param {ol.Extent} extent Extent.
* @param {number} z Z. * @param {number} z Z.
* @return {ol3.TileBounds} Tile bounds. * @return {ol.TileBounds} Tile bounds.
*/ */
ol3.TileGrid.prototype.getTileBoundsForExtentAndZ = function(extent, z) { ol.TileGrid.prototype.getTileBoundsForExtentAndZ = function(extent, z) {
var resolution = this.getResolution(z); var resolution = this.getResolution(z);
return this.getTileBoundsForExtentAndResolution(extent, resolution); return this.getTileBoundsForExtentAndResolution(extent, resolution);
}; };
/** /**
* @param {ol3.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @return {ol3.Coordinate} Tile center. * @return {ol.Coordinate} Tile center.
*/ */
ol3.TileGrid.prototype.getTileCoordCenter = function(tileCoord) { ol.TileGrid.prototype.getTileCoordCenter = function(tileCoord) {
var origin = this.getOrigin(tileCoord.z); var origin = this.getOrigin(tileCoord.z);
var resolution = this.getResolution(tileCoord.z); var resolution = this.getResolution(tileCoord.z);
var tileSize = this.tileSize_; var tileSize = this.tileSize_;
var x = origin.x + (tileCoord.x + 0.5) * tileSize.width * resolution; var x = origin.x + (tileCoord.x + 0.5) * tileSize.width * resolution;
var y = origin.y + (tileCoord.y + 0.5) * tileSize.height * resolution; var y = origin.y + (tileCoord.y + 0.5) * tileSize.height * resolution;
return new ol3.Coordinate(x, y); return new ol.Coordinate(x, y);
}; };
/** /**
* @param {ol3.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @return {ol3.Extent} Extent. * @return {ol.Extent} Extent.
*/ */
ol3.TileGrid.prototype.getTileCoordExtent = function(tileCoord) { ol.TileGrid.prototype.getTileCoordExtent = function(tileCoord) {
var origin = this.getOrigin(tileCoord.z); var origin = this.getOrigin(tileCoord.z);
var resolution = this.getResolution(tileCoord.z); var resolution = this.getResolution(tileCoord.z);
var tileSize = this.tileSize_; var tileSize = this.tileSize_;
@@ -225,34 +225,34 @@ ol3.TileGrid.prototype.getTileCoordExtent = function(tileCoord) {
var minY = origin.y + tileCoord.y * tileSize.height * resolution; var minY = origin.y + tileCoord.y * tileSize.height * resolution;
var maxX = minX + tileSize.width * resolution; var maxX = minX + tileSize.width * resolution;
var maxY = minY + tileSize.height * resolution; var maxY = minY + tileSize.height * resolution;
return new ol3.Extent(minX, minY, maxX, maxY); return new ol.Extent(minX, minY, maxX, maxY);
}; };
/** /**
* @param {ol3.Coordinate} coordinate Coordinate. * @param {ol.Coordinate} coordinate Coordinate.
* @param {number} resolution Resolution. * @param {number} resolution Resolution.
* @return {ol3.TileCoord} Tile coordinate. * @return {ol.TileCoord} Tile coordinate.
*/ */
ol3.TileGrid.prototype.getTileCoordForCoordAndResolution = function( ol.TileGrid.prototype.getTileCoordForCoordAndResolution = function(
coordinate, resolution) { coordinate, resolution) {
var z = this.getZForResolution(resolution); var z = this.getZForResolution(resolution);
var scale = resolution / this.getResolution(z); var scale = resolution / this.getResolution(z);
var origin = this.getOrigin(z); var origin = this.getOrigin(z);
var offsetFromOrigin = new ol3.Coordinate( var offsetFromOrigin = new ol.Coordinate(
Math.floor((coordinate.x - origin.x) / resolution), Math.floor((coordinate.x - origin.x) / resolution),
Math.floor((coordinate.y - origin.y) / resolution)); Math.floor((coordinate.y - origin.y) / resolution));
var tileSize = this.getTileSize(); var tileSize = this.getTileSize();
tileSize = new ol3.Size(tileSize.width / scale, tileSize = new ol.Size(tileSize.width / scale,
tileSize.height / scale); tileSize.height / scale);
var x, y; var x, y;
x = Math.floor(offsetFromOrigin.x / tileSize.width); x = Math.floor(offsetFromOrigin.x / tileSize.width);
y = Math.floor(offsetFromOrigin.y / tileSize.height); y = Math.floor(offsetFromOrigin.y / tileSize.height);
var tileCoord = new ol3.TileCoord(z, x, y); var tileCoord = new ol.TileCoord(z, x, y);
var tileCoordPixelBounds = this.getPixelBoundsForTileCoordAndResolution( var tileCoordPixelBounds = this.getPixelBoundsForTileCoordAndResolution(
tileCoord, resolution); tileCoord, resolution);
@@ -274,30 +274,30 @@ ol3.TileGrid.prototype.getTileCoordForCoordAndResolution = function(
/** /**
* @param {ol3.Coordinate} coordinate Coordinate. * @param {ol.Coordinate} coordinate Coordinate.
* @param {number} z Z. * @param {number} z Z.
* @return {ol3.TileCoord} Tile coordinate. * @return {ol.TileCoord} Tile coordinate.
*/ */
ol3.TileGrid.prototype.getTileCoordForCoordAndZ = function(coordinate, z) { ol.TileGrid.prototype.getTileCoordForCoordAndZ = function(coordinate, z) {
var resolution = this.getResolution(z); var resolution = this.getResolution(z);
return this.getTileCoordForCoordAndResolution(coordinate, resolution); return this.getTileCoordForCoordAndResolution(coordinate, resolution);
}; };
/** /**
* @param {ol3.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @return {number} Tile resolution. * @return {number} Tile resolution.
*/ */
ol3.TileGrid.prototype.getTileCoordResolution = function(tileCoord) { ol.TileGrid.prototype.getTileCoordResolution = function(tileCoord) {
goog.asserts.assert(0 <= tileCoord.z && tileCoord.z < this.numResolutions_); goog.asserts.assert(0 <= tileCoord.z && tileCoord.z < this.numResolutions_);
return this.resolutions_[tileCoord.z]; return this.resolutions_[tileCoord.z];
}; };
/** /**
* @return {ol3.Size} Tile size. * @return {ol.Size} Tile size.
*/ */
ol3.TileGrid.prototype.getTileSize = function() { ol.TileGrid.prototype.getTileSize = function() {
return this.tileSize_; return this.tileSize_;
}; };
@@ -306,6 +306,6 @@ ol3.TileGrid.prototype.getTileSize = function() {
* @param {number} resolution Resolution. * @param {number} resolution Resolution.
* @return {number} Z. * @return {number} Z.
*/ */
ol3.TileGrid.prototype.getZForResolution = function(resolution) { ol.TileGrid.prototype.getZForResolution = function(resolution) {
return ol3.array.linearFindNearest(this.resolutions_, resolution); return ol.array.linearFindNearest(this.resolutions_, resolution);
}; };

View File

@@ -1,9 +1,9 @@
goog.require('goog.testing.jsunit'); goog.require('goog.testing.jsunit');
goog.require('ol3.Coordinate'); goog.require('ol.Coordinate');
goog.require('ol3.Extent'); goog.require('ol.Extent');
goog.require('ol3.Size'); goog.require('ol.Size');
goog.require('ol3.TileCoord'); goog.require('ol.TileCoord');
goog.require('ol3.TileGrid'); goog.require('ol.TileGrid');
var extent; var extent;
@@ -15,16 +15,16 @@ var tileSize;
function setUp() { function setUp() {
resolutions = [1000, 500, 250, 100]; resolutions = [1000, 500, 250, 100];
extent = new ol3.Extent(0, 0, 100000, 100000); extent = new ol.Extent(0, 0, 100000, 100000);
origin = new ol3.Coordinate(0, 0); origin = new ol.Coordinate(0, 0);
origins = []; origins = [];
tileSize = new ol3.Size(100, 100); tileSize = new ol.Size(100, 100);
} }
function testCreateValid() { function testCreateValid() {
assertNotThrows(function() { assertNotThrows(function() {
return new ol3.TileGrid(resolutions, extent, origin, tileSize); return new ol.TileGrid(resolutions, extent, origin, tileSize);
}); });
} }
@@ -32,7 +32,7 @@ function testCreateValid() {
function testCreateDuplicateResolutions() { function testCreateDuplicateResolutions() {
var resolutions = [100, 50, 50, 25, 10]; var resolutions = [100, 50, 50, 25, 10];
assertThrows(function() { assertThrows(function() {
return new ol3.TileGrid(resolutions, extent, origin, tileSize); return new ol.TileGrid(resolutions, extent, origin, tileSize);
}); });
} }
@@ -40,7 +40,7 @@ function testCreateDuplicateResolutions() {
function testCreateOutOfOrderResolutions() { function testCreateOutOfOrderResolutions() {
var resolutions = [100, 25, 50, 10]; var resolutions = [100, 25, 50, 10];
assertThrows(function() { assertThrows(function() {
return new ol3.TileGrid(resolutions, extent, origin, tileSize); return new ol.TileGrid(resolutions, extent, origin, tileSize);
}); });
} }
@@ -49,7 +49,7 @@ function testCreateOrigins() {
var resolutions = [100, 50, 25, 10]; var resolutions = [100, 50, 25, 10];
var origins = [origin, origin, origin, origin]; var origins = [origin, origin, origin, origin];
assertNotThrows(function() { assertNotThrows(function() {
return new ol3.TileGrid(resolutions, extent, origins, tileSize); return new ol.TileGrid(resolutions, extent, origins, tileSize);
}); });
} }
@@ -58,7 +58,7 @@ function testCreateTooFewOrigins() {
var resolutions = [100, 50, 25, 10]; var resolutions = [100, 50, 25, 10];
var origins = [origin, origin, origin]; var origins = [origin, origin, origin];
assertThrows(function() { assertThrows(function() {
return new ol3.TileGrid(resolutions, extent, origins, tileSize); return new ol.TileGrid(resolutions, extent, origins, tileSize);
}); });
} }
@@ -67,37 +67,37 @@ function testCreateTooManyOrigins() {
var resolutions = [100, 50, 25, 10]; var resolutions = [100, 50, 25, 10];
var origins = [origin, origin, origin, origin, origin]; var origins = [origin, origin, origin, origin, origin];
assertThrows(function() { assertThrows(function() {
return new ol3.TileGrid(resolutions, extent, origins, tileSize); return new ol.TileGrid(resolutions, extent, origins, tileSize);
}); });
} }
function testGetTileCoord() { function testGetTileCoord() {
origin = new ol3.Coordinate(0, 0); origin = new ol.Coordinate(0, 0);
var tileGrid = new ol3.TileGrid(resolutions, extent, origin, tileSize); var tileGrid = new ol.TileGrid(resolutions, extent, origin, tileSize);
var tileCoord; var tileCoord;
tileCoord = tileGrid.getTileCoordForCoordAndZ( tileCoord = tileGrid.getTileCoordForCoordAndZ(
new ol3.Coordinate(0, 0), 3); new ol.Coordinate(0, 0), 3);
assertEquals(3, tileCoord.z); assertEquals(3, tileCoord.z);
assertEquals(0, tileCoord.x); assertEquals(0, tileCoord.x);
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
tileCoord = tileGrid.getTileCoordForCoordAndZ( tileCoord = tileGrid.getTileCoordForCoordAndZ(
new ol3.Coordinate(0, 100000), 3); new ol.Coordinate(0, 100000), 3);
assertEquals(3, tileCoord.z); assertEquals(3, tileCoord.z);
assertEquals(0, tileCoord.x); assertEquals(0, tileCoord.x);
assertEquals(10, tileCoord.y); assertEquals(10, tileCoord.y);
tileCoord = tileGrid.getTileCoordForCoordAndZ( tileCoord = tileGrid.getTileCoordForCoordAndZ(
new ol3.Coordinate(100000, 0), 3); new ol.Coordinate(100000, 0), 3);
assertEquals(3, tileCoord.z); assertEquals(3, tileCoord.z);
assertEquals(10, tileCoord.x); assertEquals(10, tileCoord.x);
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
tileCoord = tileGrid.getTileCoordForCoordAndZ( tileCoord = tileGrid.getTileCoordForCoordAndZ(
new ol3.Coordinate(100000, 100000), 3); new ol.Coordinate(100000, 100000), 3);
assertEquals(3, tileCoord.z); assertEquals(3, tileCoord.z);
assertEquals(10, tileCoord.x); assertEquals(10, tileCoord.x);
assertEquals(10, tileCoord.y); assertEquals(10, tileCoord.y);
@@ -107,30 +107,30 @@ function testGetTileCoord() {
function testGetTileCoordYSouth() { function testGetTileCoordYSouth() {
origin = new ol3.Coordinate(0, 100000); origin = new ol.Coordinate(0, 100000);
var tileGrid = new ol3.TileGrid(resolutions, extent, origin, tileSize); var tileGrid = new ol.TileGrid(resolutions, extent, origin, tileSize);
var tileCoord; var tileCoord;
tileCoord = tileGrid.getTileCoordForCoordAndZ( tileCoord = tileGrid.getTileCoordForCoordAndZ(
new ol3.Coordinate(0, 0), 3); new ol.Coordinate(0, 0), 3);
assertEquals(3, tileCoord.z); assertEquals(3, tileCoord.z);
assertEquals(0, tileCoord.x); assertEquals(0, tileCoord.x);
assertEquals(-10, tileCoord.y); assertEquals(-10, tileCoord.y);
tileCoord = tileGrid.getTileCoordForCoordAndZ( tileCoord = tileGrid.getTileCoordForCoordAndZ(
new ol3.Coordinate(0, 100000), 3); new ol.Coordinate(0, 100000), 3);
assertEquals(3, tileCoord.z); assertEquals(3, tileCoord.z);
assertEquals(0, tileCoord.x); assertEquals(0, tileCoord.x);
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
tileCoord = tileGrid.getTileCoordForCoordAndZ( tileCoord = tileGrid.getTileCoordForCoordAndZ(
new ol3.Coordinate(100000, 0), 3); new ol.Coordinate(100000, 0), 3);
assertEquals(3, tileCoord.z); assertEquals(3, tileCoord.z);
assertEquals(10, tileCoord.x); assertEquals(10, tileCoord.x);
assertEquals(-10, tileCoord.y); assertEquals(-10, tileCoord.y);
tileCoord = tileGrid.getTileCoordForCoordAndZ( tileCoord = tileGrid.getTileCoordForCoordAndZ(
new ol3.Coordinate(100000, 100000), 3); new ol.Coordinate(100000, 100000), 3);
assertEquals(3, tileCoord.z); assertEquals(3, tileCoord.z);
assertEquals(10, tileCoord.x); assertEquals(10, tileCoord.x);
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
@@ -139,14 +139,14 @@ function testGetTileCoordYSouth() {
function testGetTileCoordForCoordAndResolution() { function testGetTileCoordForCoordAndResolution() {
var tileSize = new ol3.Size(256, 256); var tileSize = new ol.Size(256, 256);
var tileGrid = new ol3.TileGrid([10], extent, origin, tileSize); var tileGrid = new ol.TileGrid([10], extent, origin, tileSize);
var coordinate; var coordinate;
var tileCoord; var tileCoord;
// gets the first tile at the origin // gets the first tile at the origin
coordinate = new ol3.Coordinate(0, 0); coordinate = new ol.Coordinate(0, 0);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 10); coordinate, 10);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -154,7 +154,7 @@ function testGetTileCoordForCoordAndResolution() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// gets one tile northwest of the origin // gets one tile northwest of the origin
coordinate = new ol3.Coordinate(-1280, 1280); coordinate = new ol.Coordinate(-1280, 1280);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 10); coordinate, 10);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -162,7 +162,7 @@ function testGetTileCoordForCoordAndResolution() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// gets one tile northeast of the origin // gets one tile northeast of the origin
coordinate = new ol3.Coordinate(1280, 1280); coordinate = new ol.Coordinate(1280, 1280);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 10); coordinate, 10);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -170,7 +170,7 @@ function testGetTileCoordForCoordAndResolution() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// gets one tile southeast of the origin // gets one tile southeast of the origin
coordinate = new ol3.Coordinate(1280, -1280); coordinate = new ol.Coordinate(1280, -1280);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 10); coordinate, 10);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -178,7 +178,7 @@ function testGetTileCoordForCoordAndResolution() {
assertEquals(-1, tileCoord.y); assertEquals(-1, tileCoord.y);
// gets one tile southwest of the origin // gets one tile southwest of the origin
coordinate = new ol3.Coordinate(-1280, -1280); coordinate = new ol.Coordinate(-1280, -1280);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 10); coordinate, 10);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -186,7 +186,7 @@ function testGetTileCoordForCoordAndResolution() {
assertEquals(-1, tileCoord.y); assertEquals(-1, tileCoord.y);
// gets the tile to the east when on the edge // gets the tile to the east when on the edge
coordinate = new ol3.Coordinate(2560, -1280); coordinate = new ol.Coordinate(2560, -1280);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 10); coordinate, 10);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -194,7 +194,7 @@ function testGetTileCoordForCoordAndResolution() {
assertEquals(-1, tileCoord.y); assertEquals(-1, tileCoord.y);
// gets the tile to the north when on the edge // gets the tile to the north when on the edge
coordinate = new ol3.Coordinate(1280, -2560); coordinate = new ol.Coordinate(1280, -2560);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 10); coordinate, 10);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -202,7 +202,7 @@ function testGetTileCoordForCoordAndResolution() {
assertEquals(-1, tileCoord.y); assertEquals(-1, tileCoord.y);
// pixels are top aligned to the origin // pixels are top aligned to the origin
coordinate = new ol3.Coordinate(1280, -2559.999); coordinate = new ol.Coordinate(1280, -2559.999);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 10); coordinate, 10);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -210,7 +210,7 @@ function testGetTileCoordForCoordAndResolution() {
assertEquals(-1, tileCoord.y); assertEquals(-1, tileCoord.y);
// pixels are left aligned to the origin // pixels are left aligned to the origin
coordinate = new ol3.Coordinate(2559.999, -1280); coordinate = new ol.Coordinate(2559.999, -1280);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 10); coordinate, 10);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -220,8 +220,8 @@ function testGetTileCoordForCoordAndResolution() {
function testGetTileCoordForCoordAndResolutionFractional() { function testGetTileCoordForCoordAndResolutionFractional() {
var tileSize = new ol3.Size(256, 256); var tileSize = new ol.Size(256, 256);
var tileGrid = new ol3.TileGrid([1 / 3], extent, origin, tileSize); var tileGrid = new ol.TileGrid([1 / 3], extent, origin, tileSize);
var coordinate; var coordinate;
var tileCoord; var tileCoord;
@@ -232,7 +232,7 @@ function testGetTileCoordForCoordAndResolutionFractional() {
// rendered (0,0 is normal; 1,0 is wider; 0,1 is taller; etc.) // rendered (0,0 is normal; 1,0 is wider; 0,1 is taller; etc.)
// gets the first tile at the origin // gets the first tile at the origin
coordinate = new ol3.Coordinate(0, 0); coordinate = new ol.Coordinate(0, 0);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 1); coordinate, 1);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -240,7 +240,7 @@ function testGetTileCoordForCoordAndResolutionFractional() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// gets the 1,0 tile at 256/3,0 // gets the 1,0 tile at 256/3,0
coordinate = new ol3.Coordinate(256 / 3, 0); coordinate = new ol.Coordinate(256 / 3, 0);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 1); coordinate, 1);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -248,7 +248,7 @@ function testGetTileCoordForCoordAndResolutionFractional() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// still gets the 1,0 tile at 512/3,0 - wider tile // still gets the 1,0 tile at 512/3,0 - wider tile
coordinate = new ol3.Coordinate(512 / 3, 0); coordinate = new ol.Coordinate(512 / 3, 0);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 1); coordinate, 1);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -256,7 +256,7 @@ function testGetTileCoordForCoordAndResolutionFractional() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// gets the 2,0 tile at 513/3,0 // gets the 2,0 tile at 513/3,0
coordinate = new ol3.Coordinate(513 / 3, 0); coordinate = new ol.Coordinate(513 / 3, 0);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 1); coordinate, 1);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -264,7 +264,7 @@ function testGetTileCoordForCoordAndResolutionFractional() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// gets the 3,0 tile at 768/3,0 // gets the 3,0 tile at 768/3,0
coordinate = new ol3.Coordinate(768 / 3, 0); coordinate = new ol.Coordinate(768 / 3, 0);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 1); coordinate, 1);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -272,7 +272,7 @@ function testGetTileCoordForCoordAndResolutionFractional() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// gets the 4,0 tile at 1024/3,0 // gets the 4,0 tile at 1024/3,0
coordinate = new ol3.Coordinate(1024 / 3, 0); coordinate = new ol.Coordinate(1024 / 3, 0);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 1); coordinate, 1);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -280,7 +280,7 @@ function testGetTileCoordForCoordAndResolutionFractional() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// still gets the 4,0 tile at 1280/3,0 - wider tile // still gets the 4,0 tile at 1280/3,0 - wider tile
coordinate = new ol3.Coordinate(1280 / 3, 0); coordinate = new ol.Coordinate(1280 / 3, 0);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 1); coordinate, 1);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -288,7 +288,7 @@ function testGetTileCoordForCoordAndResolutionFractional() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// gets the 5,0 tile at 1281/3,0 // gets the 5,0 tile at 1281/3,0
coordinate = new ol3.Coordinate(1281 / 3, 0); coordinate = new ol.Coordinate(1281 / 3, 0);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 1); coordinate, 1);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -296,7 +296,7 @@ function testGetTileCoordForCoordAndResolutionFractional() {
assertEquals(0, tileCoord.y); assertEquals(0, tileCoord.y);
// gets the 0,1 tile at 0,-256/3 // gets the 0,1 tile at 0,-256/3
coordinate = new ol3.Coordinate(0, -256 / 3); coordinate = new ol.Coordinate(0, -256 / 3);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 1); coordinate, 1);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -304,7 +304,7 @@ function testGetTileCoordForCoordAndResolutionFractional() {
assertEquals(-2, tileCoord.y); assertEquals(-2, tileCoord.y);
// still gets the 0,1 tile at 0,-512/3 - taller tile // still gets the 0,1 tile at 0,-512/3 - taller tile
coordinate = new ol3.Coordinate(0, -512 / 3); coordinate = new ol.Coordinate(0, -512 / 3);
tileCoord = tileGrid.getTileCoordForCoordAndResolution( tileCoord = tileGrid.getTileCoordForCoordAndResolution(
coordinate, 1); coordinate, 1);
assertEquals(0, tileCoord.z); assertEquals(0, tileCoord.z);
@@ -315,18 +315,18 @@ function testGetTileCoordForCoordAndResolutionFractional() {
function testGetTileCoordCenter() { function testGetTileCoordCenter() {
var tileGrid = new ol3.TileGrid(resolutions, extent, origin, tileSize); var tileGrid = new ol.TileGrid(resolutions, extent, origin, tileSize);
var center; var center;
center = tileGrid.getTileCoordCenter(new ol3.TileCoord(0, 0, 0)); center = tileGrid.getTileCoordCenter(new ol.TileCoord(0, 0, 0));
assertEquals(50000, center.x); assertEquals(50000, center.x);
assertEquals(50000, center.y); assertEquals(50000, center.y);
center = tileGrid.getTileCoordCenter(new ol3.TileCoord(3, 0, 0)); center = tileGrid.getTileCoordCenter(new ol.TileCoord(3, 0, 0));
assertEquals(5000, center.x); assertEquals(5000, center.x);
assertEquals(5000, center.y); assertEquals(5000, center.y);
center = tileGrid.getTileCoordCenter(new ol3.TileCoord(3, 9, 9)); center = tileGrid.getTileCoordCenter(new ol.TileCoord(3, 9, 9));
assertEquals(95000, center.x); assertEquals(95000, center.x);
assertEquals(95000, center.y); assertEquals(95000, center.y);
@@ -336,22 +336,22 @@ function testGetTileCoordCenter() {
function testGetTileCoordExtent() { function testGetTileCoordExtent() {
var tileGrid = new ol3.TileGrid(resolutions, extent, origin, tileSize); var tileGrid = new ol.TileGrid(resolutions, extent, origin, tileSize);
var tileCoordExtent; var tileCoordExtent;
tileCoordExtent = tileGrid.getTileCoordExtent(new ol3.TileCoord(0, 0, 0)); tileCoordExtent = tileGrid.getTileCoordExtent(new ol.TileCoord(0, 0, 0));
assertEquals(0, tileCoordExtent.minX); assertEquals(0, tileCoordExtent.minX);
assertEquals(0, tileCoordExtent.minY); assertEquals(0, tileCoordExtent.minY);
assertEquals(100000, tileCoordExtent.maxX); assertEquals(100000, tileCoordExtent.maxX);
assertEquals(100000, tileCoordExtent.maxY); assertEquals(100000, tileCoordExtent.maxY);
tileCoordExtent = tileGrid.getTileCoordExtent(new ol3.TileCoord(3, 9, 0)); tileCoordExtent = tileGrid.getTileCoordExtent(new ol.TileCoord(3, 9, 0));
assertEquals(90000, tileCoordExtent.minX); assertEquals(90000, tileCoordExtent.minX);
assertEquals(0, tileCoordExtent.minY); assertEquals(0, tileCoordExtent.minY);
assertEquals(100000, tileCoordExtent.maxX); assertEquals(100000, tileCoordExtent.maxX);
assertEquals(10000, tileCoordExtent.maxY); assertEquals(10000, tileCoordExtent.maxY);
tileCoordExtent = tileGrid.getTileCoordExtent(new ol3.TileCoord(3, 0, 9)); tileCoordExtent = tileGrid.getTileCoordExtent(new ol.TileCoord(3, 0, 9));
assertEquals(0, tileCoordExtent.minX); assertEquals(0, tileCoordExtent.minX);
assertEquals(90000, tileCoordExtent.minY); assertEquals(90000, tileCoordExtent.minY);
assertEquals(10000, tileCoordExtent.maxX); assertEquals(10000, tileCoordExtent.maxX);
@@ -362,8 +362,8 @@ function testGetTileCoordExtent() {
function testGetExtentTileBounds() { function testGetExtentTileBounds() {
var tileGrid = new ol3.TileGrid(resolutions, extent, origin, tileSize); var tileGrid = new ol.TileGrid(resolutions, extent, origin, tileSize);
var e = new ol3.Extent(45000, 5000, 55000, 15000); var e = new ol.Extent(45000, 5000, 55000, 15000);
var tileBounds; var tileBounds;
tileBounds = tileGrid.getTileBoundsForExtentAndZ(e, 0); tileBounds = tileGrid.getTileBoundsForExtentAndZ(e, 0);
@@ -395,11 +395,11 @@ function testGetExtentTileBounds() {
function testForEachTileCoordParent() { function testForEachTileCoordParent() {
var tileGrid = new ol3.TileGrid(resolutions, extent, origin, tileSize); var tileGrid = new ol.TileGrid(resolutions, extent, origin, tileSize);
var zs = [], tileBoundss = []; var zs = [], tileBoundss = [];
tileGrid.forEachTileCoordParentTileBounds( tileGrid.forEachTileCoordParentTileBounds(
new ol3.TileCoord(3, 7, 3), new ol.TileCoord(3, 7, 3),
function(z, tileBounds) { function(z, tileBounds) {
zs.push(z); zs.push(z);
tileBoundss.push(tileBounds); tileBoundss.push(tileBounds);
@@ -433,7 +433,7 @@ function testForEachTileCoordParent() {
function testGetZForResolutionExact() { function testGetZForResolutionExact() {
var tileGrid = var tileGrid =
new ol3.TileGrid(resolutions, extent, origin, tileSize); new ol.TileGrid(resolutions, extent, origin, tileSize);
assertEquals(0, tileGrid.getZForResolution(1000)); assertEquals(0, tileGrid.getZForResolution(1000));
assertEquals(1, tileGrid.getZForResolution(500)); assertEquals(1, tileGrid.getZForResolution(500));
@@ -446,7 +446,7 @@ function testGetZForResolutionExact() {
function testGetZForResolutionApproximate() { function testGetZForResolutionApproximate() {
var tileGrid = var tileGrid =
new ol3.TileGrid(resolutions, extent, origin, tileSize); new ol.TileGrid(resolutions, extent, origin, tileSize);
assertEquals(0, tileGrid.getZForResolution(2000)); assertEquals(0, tileGrid.getZForResolution(2000));
assertEquals(0, tileGrid.getZForResolution(1000)); assertEquals(0, tileGrid.getZForResolution(1000));

26
src/ol/tilelayer.js Normal file
View File

@@ -0,0 +1,26 @@
goog.provide('ol.TileLayer');
goog.require('ol.Layer');
goog.require('ol.TileStore');
/**
* @constructor
* @extends {ol.Layer}
* @param {ol.TileStore} tileStore Tile store.
* @param {Object.<string, *>=} opt_values Values.
*/
ol.TileLayer = function(tileStore, opt_values) {
goog.base(this, tileStore, opt_values);
};
goog.inherits(ol.TileLayer, ol.Layer);
/**
* @inheritDoc
* @return {ol.TileStore} Store.
*/
ol.TileLayer.prototype.getStore = function() {
return /** @type {ol.TileStore} */ goog.base(this, 'getStore');
};

View File

@@ -1,38 +1,38 @@
goog.provide('ol3.TileStore'); goog.provide('ol.TileStore');
goog.require('ol3.Attribution'); goog.require('ol.Attribution');
goog.require('ol3.Store'); goog.require('ol.Store');
goog.require('ol3.Tile'); goog.require('ol.Tile');
goog.require('ol3.TileCoord'); goog.require('ol.TileCoord');
goog.require('ol3.TileGrid'); goog.require('ol.TileGrid');
goog.require('ol3.TileUrlFunctionType'); goog.require('ol.TileUrlFunctionType');
/** /**
* @constructor * @constructor
* @extends {ol3.Store} * @extends {ol.Store}
* @param {ol3.Projection} projection Projection. * @param {ol.Projection} projection Projection.
* @param {ol3.TileGrid} tileGrid Tile grid. * @param {ol.TileGrid} tileGrid Tile grid.
* @param {ol3.TileUrlFunctionType} tileUrlFunction Tile URL. * @param {ol.TileUrlFunctionType} tileUrlFunction Tile URL.
* @param {ol3.Extent=} opt_extent Extent. * @param {ol.Extent=} opt_extent Extent.
* @param {Array.<string>=} opt_attributions Attributions. * @param {Array.<string>=} opt_attributions Attributions.
* @param {?string=} opt_crossOrigin Cross origin. * @param {?string=} opt_crossOrigin Cross origin.
*/ */
ol3.TileStore = function(projection, tileGrid, tileUrlFunction, opt_extent, ol.TileStore = function(projection, tileGrid, tileUrlFunction, opt_extent,
opt_attributions, opt_crossOrigin) { opt_attributions, opt_crossOrigin) {
goog.base(this, projection, opt_extent, opt_attributions); goog.base(this, projection, opt_extent, opt_attributions);
/** /**
* @protected * @protected
* @type {ol3.TileGrid} * @type {ol.TileGrid}
*/ */
this.tileGrid = tileGrid; this.tileGrid = tileGrid;
/** /**
* @protected * @protected
* @type {ol3.TileUrlFunctionType} * @type {ol.TileUrlFunctionType}
*/ */
this.tileUrlFunction = tileUrlFunction; this.tileUrlFunction = tileUrlFunction;
@@ -44,29 +44,29 @@ ol3.TileStore = function(projection, tileGrid, tileUrlFunction, opt_extent,
/** /**
* @private * @private
* @type {Object.<string, ol3.Tile>} * @type {Object.<string, ol.Tile>}
* FIXME will need to expire elements from this cache * FIXME will need to expire elements from this cache
* FIXME see elemoine's work with goog.structs.LinkedMap * FIXME see elemoine's work with goog.structs.LinkedMap
*/ */
this.tileCache_ = {}; this.tileCache_ = {};
}; };
goog.inherits(ol3.TileStore, ol3.Store); goog.inherits(ol.TileStore, ol.Store);
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol3.TileStore.prototype.getResolutions = function() { ol.TileStore.prototype.getResolutions = function() {
return this.tileGrid.getResolutions(); return this.tileGrid.getResolutions();
}; };
/** /**
* @param {ol3.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @return {ol3.Tile} Tile. * @return {ol.Tile} Tile.
*/ */
ol3.TileStore.prototype.getTile = function(tileCoord) { ol.TileStore.prototype.getTile = function(tileCoord) {
var key = tileCoord.toString(); var key = tileCoord.toString();
if (goog.object.containsKey(this.tileCache_, key)) { if (goog.object.containsKey(this.tileCache_, key)) {
return this.tileCache_[key]; return this.tileCache_[key];
@@ -74,7 +74,7 @@ ol3.TileStore.prototype.getTile = function(tileCoord) {
var tileUrl = this.getTileCoordUrl(tileCoord); var tileUrl = this.getTileCoordUrl(tileCoord);
var tile; var tile;
if (goog.isDef(tileUrl)) { if (goog.isDef(tileUrl)) {
tile = new ol3.Tile(tileCoord, tileUrl, this.crossOrigin_); tile = new ol.Tile(tileCoord, tileUrl, this.crossOrigin_);
} else { } else {
tile = null; tile = null;
} }
@@ -85,17 +85,17 @@ ol3.TileStore.prototype.getTile = function(tileCoord) {
/** /**
* @param {ol3.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @return {string|undefined} Tile URL. * @return {string|undefined} Tile URL.
*/ */
ol3.TileStore.prototype.getTileCoordUrl = function(tileCoord) { ol.TileStore.prototype.getTileCoordUrl = function(tileCoord) {
return this.tileUrlFunction(tileCoord); return this.tileUrlFunction(tileCoord);
}; };
/** /**
* @return {ol3.TileGrid} Tile grid. * @return {ol.TileGrid} Tile grid.
*/ */
ol3.TileStore.prototype.getTileGrid = function() { ol.TileStore.prototype.getTileGrid = function() {
return this.tileGrid; return this.tileGrid;
}; };

View File

@@ -1,21 +1,21 @@
goog.provide('ol3.TileUrlFunction'); goog.provide('ol.TileUrlFunction');
goog.provide('ol3.TileUrlFunctionType'); goog.provide('ol.TileUrlFunctionType');
goog.require('goog.math'); goog.require('goog.math');
goog.require('ol3.TileCoord'); goog.require('ol.TileCoord');
/** /**
* @typedef {function(ol3.TileCoord): (string|undefined)} * @typedef {function(ol.TileCoord): (string|undefined)}
*/ */
ol3.TileUrlFunctionType; ol.TileUrlFunctionType;
/** /**
* @param {string} template Template. * @param {string} template Template.
* @return {ol3.TileUrlFunctionType} Tile URL function. * @return {ol.TileUrlFunctionType} Tile URL function.
*/ */
ol3.TileUrlFunction.createFromTemplate = function(template) { ol.TileUrlFunction.createFromTemplate = function(template) {
var match = var match =
/\{(\d)-(\d)\}/.exec(template) || /\{([a-z])-([a-z])\}/.exec(template); /\{(\d)-(\d)\}/.exec(template) || /\{([a-z])-([a-z])\}/.exec(template);
if (match) { if (match) {
@@ -26,7 +26,7 @@ ol3.TileUrlFunction.createFromTemplate = function(template) {
for (charCode = startCharCode; charCode <= stopCharCode; ++charCode) { for (charCode = startCharCode; charCode <= stopCharCode; ++charCode) {
templates.push(template.replace(match[0], String.fromCharCode(charCode))); templates.push(template.replace(match[0], String.fromCharCode(charCode)));
} }
return ol3.TileUrlFunction.createFromTemplates(templates); return ol.TileUrlFunction.createFromTemplates(templates);
} else { } else {
return function(tileCoord) { return function(tileCoord) {
if (goog.isNull(tileCoord)) { if (goog.isNull(tileCoord)) {
@@ -43,19 +43,19 @@ ol3.TileUrlFunction.createFromTemplate = function(template) {
/** /**
* @param {Array.<string>} templates Templates. * @param {Array.<string>} templates Templates.
* @return {ol3.TileUrlFunctionType} Tile URL function. * @return {ol.TileUrlFunctionType} Tile URL function.
*/ */
ol3.TileUrlFunction.createFromTemplates = function(templates) { ol.TileUrlFunction.createFromTemplates = function(templates) {
return ol3.TileUrlFunction.createFromTileUrlFunctions( return ol.TileUrlFunction.createFromTileUrlFunctions(
goog.array.map(templates, ol3.TileUrlFunction.createFromTemplate)); goog.array.map(templates, ol.TileUrlFunction.createFromTemplate));
}; };
/** /**
* @param {Array.<ol3.TileUrlFunctionType>} tileUrlFunctions Tile URL Functions. * @param {Array.<ol.TileUrlFunctionType>} tileUrlFunctions Tile URL Functions.
* @return {ol3.TileUrlFunctionType} Tile URL function. * @return {ol.TileUrlFunctionType} Tile URL function.
*/ */
ol3.TileUrlFunction.createFromTileUrlFunctions = function(tileUrlFunctions) { ol.TileUrlFunction.createFromTileUrlFunctions = function(tileUrlFunctions) {
return function(tileCoord) { return function(tileCoord) {
if (goog.isNull(tileCoord)) { if (goog.isNull(tileCoord)) {
return undefined; return undefined;
@@ -68,21 +68,21 @@ ol3.TileUrlFunction.createFromTileUrlFunctions = function(tileUrlFunctions) {
/** /**
* @param {ol3.TileCoord} tileCoord Tile coordinate. * @param {ol.TileCoord} tileCoord Tile coordinate.
* @return {string|undefined} Tile URL. * @return {string|undefined} Tile URL.
*/ */
ol3.TileUrlFunction.nullTileUrlFunction = function(tileCoord) { ol.TileUrlFunction.nullTileUrlFunction = function(tileCoord) {
return undefined; return undefined;
}; };
/** /**
* @param {function(ol3.TileCoord): ol3.TileCoord} transformFn * @param {function(ol.TileCoord): ol.TileCoord} transformFn
* Transform.function. * Transform.function.
* @param {ol3.TileUrlFunctionType} tileUrlFunction Tile URL function. * @param {ol.TileUrlFunctionType} tileUrlFunction Tile URL function.
* @return {ol3.TileUrlFunctionType} Tile URL function. * @return {ol.TileUrlFunctionType} Tile URL function.
*/ */
ol3.TileUrlFunction.withTileCoordTransform = ol.TileUrlFunction.withTileCoordTransform =
function(transformFn, tileUrlFunction) { function(transformFn, tileUrlFunction) {
return function(tileCoord) { return function(tileCoord) {
if (goog.isNull(tileCoord)) { if (goog.isNull(tileCoord)) {

View File

@@ -0,0 +1,33 @@
goog.require('goog.testing.jsunit');
goog.require('ol.TileCoord');
goog.require('ol.TileUrlFunction');
function testCreateFromTemplate() {
var tileUrl = ol.TileUrlFunction.createFromTemplate('{z}/{x}/{y}');
assertEquals('3/2/1', tileUrl(new ol.TileCoord(3, 2, 1)));
assertUndefined(tileUrl(null));
}
function testWithTileCoordTransform() {
var tileUrl = ol.TileUrlFunction.withTileCoordTransform(
function(tileCoord) {
return new ol.TileCoord(tileCoord.z, tileCoord.x, -tileCoord.y);
},
ol.TileUrlFunction.createFromTemplate('{z}/{x}/{y}'));
assertEquals('3/2/1', tileUrl(new ol.TileCoord(3, 2, -1)));
assertUndefined(tileUrl(null));
}
function testCreateFromTileUrlFunctions() {
var tileUrl = ol.TileUrlFunction.createFromTileUrlFunctions([
ol.TileUrlFunction.createFromTemplate('a'),
ol.TileUrlFunction.createFromTemplate('b')
]);
var tileUrl1 = tileUrl(new ol.TileCoord(1, 0, 0));
var tileUrl2 = tileUrl(new ol.TileCoord(1, 0, 1));
assertTrue(tileUrl1 != tileUrl2);
assertUndefined(tileUrl(null));
}

View File

@@ -0,0 +1,9 @@
goog.provide('ol.TransformFunction');
goog.require('ol.Coordinate');
/**
* @typedef {function(ol.Coordinate): ol.Coordinate}
*/
ol.TransformFunction;

View File

@@ -1,10 +1,10 @@
goog.provide('ol3.webgl.WebGLContextEventType'); goog.provide('ol.webgl.WebGLContextEventType');
/** /**
* @enum {string} * @enum {string}
*/ */
ol3.webgl.WebGLContextEventType = { ol.webgl.WebGLContextEventType = {
LOST: 'webglcontextlost', LOST: 'webglcontextlost',
RESTORED: 'webglcontextrestored' RESTORED: 'webglcontextrestored'
}; };

View File

@@ -1,46 +0,0 @@
goog.require('goog.testing.jsunit');
goog.require('ol3.array');
function testBinaryFindNearest() {
var arr = [1000, 500, 100];
assertEquals(0, ol3.array.binaryFindNearest(arr, 10000));
assertEquals(0, ol3.array.binaryFindNearest(arr, 1000));
assertEquals(0, ol3.array.binaryFindNearest(arr, 900));
assertEquals(1, ol3.array.binaryFindNearest(arr, 750));
assertEquals(1, ol3.array.binaryFindNearest(arr, 550));
assertEquals(1, ol3.array.binaryFindNearest(arr, 500));
assertEquals(1, ol3.array.binaryFindNearest(arr, 450));
assertEquals(2, ol3.array.binaryFindNearest(arr, 300));
assertEquals(2, ol3.array.binaryFindNearest(arr, 200));
assertEquals(2, ol3.array.binaryFindNearest(arr, 100));
assertEquals(2, ol3.array.binaryFindNearest(arr, 50));
}
function testLinearFindNearest() {
var arr = [1000, 500, 100];
assertEquals(0, ol3.array.linearFindNearest(arr, 10000));
assertEquals(0, ol3.array.linearFindNearest(arr, 1000));
assertEquals(0, ol3.array.linearFindNearest(arr, 900));
assertEquals(1, ol3.array.linearFindNearest(arr, 750));
assertEquals(1, ol3.array.linearFindNearest(arr, 550));
assertEquals(1, ol3.array.linearFindNearest(arr, 500));
assertEquals(1, ol3.array.linearFindNearest(arr, 450));
assertEquals(2, ol3.array.linearFindNearest(arr, 300));
assertEquals(2, ol3.array.linearFindNearest(arr, 200));
assertEquals(2, ol3.array.linearFindNearest(arr, 100));
assertEquals(2, ol3.array.linearFindNearest(arr, 50));
}

View File

@@ -1,58 +0,0 @@
goog.provide('ol3.Attribution');
goog.require('ol3.CoverageArea');
goog.require('ol3.Projection');
/**
* @constructor
* @param {string} html HTML.
* @param {Array.<ol3.CoverageArea>=} opt_coverageAreas Coverage areas.
* @param {ol3.Projection=} opt_projection Projection.
*/
ol3.Attribution = function(html, opt_coverageAreas, opt_projection) {
/**
* @private
* @type {string}
*/
this.html_ = html;
/**
* @private
* @type {Array.<ol3.CoverageArea>}
*/
this.coverageAreas_ = opt_coverageAreas || null;
/**
* @private
* @type {ol3.Projection}
*/
this.projection_ = opt_projection || null;
};
/**
* @return {Array.<ol3.CoverageArea>} Coverage areas.
*/
ol3.Attribution.prototype.getCoverageAreas = function() {
return this.coverageAreas_;
};
/**
* @return {string} HTML.
*/
ol3.Attribution.prototype.getHtml = function() {
return this.html_;
};
/**
* @return {ol3.Projection} Projection.
*/
ol3.Attribution.prototype.getProjection = function() {
return this.projection_;
};

View File

@@ -1,33 +0,0 @@
goog.provide('ol3.Control');
goog.require('ol3.Map');
/**
* @constructor
* @param {ol3.Map} map Map.
*/
ol3.Control = function(map) {
/**
* @private
* @type {ol3.Map}
*/
this.map_ = map;
};
/**
* @return {Element} Element.
*/
ol3.Control.prototype.getElement = goog.abstractMethod;
/**
* @return {ol3.Map} Map.
*/
ol3.Control.prototype.getMap = function() {
return this.map_;
};

View File

@@ -1,31 +0,0 @@
goog.provide('ol3.Coordinate');
goog.require('goog.math.Vec2');
/**
* @constructor
* @extends {goog.math.Vec2}
* @param {number} x X.
* @param {number} y Y.
*/
ol3.Coordinate = function(x, y) {
goog.base(this, x, y);
};
goog.inherits(ol3.Coordinate, goog.math.Vec2);
/**
* @const
* @type {ol3.Coordinate}
*/
ol3.Coordinate.ZERO = new ol3.Coordinate(0, 0);
/**
* @return {ol3.Coordinate} Clone.
*/
ol3.Coordinate.prototype.clone = function() {
return new ol3.Coordinate(this.x, this.y);
};

View File

@@ -1,45 +0,0 @@
goog.provide('ol3.CoverageArea');
goog.require('ol3.Extent');
/**
* @constructor
* @param {ol3.Extent} extent Extent.
*/
ol3.CoverageArea = function(extent) {
/**
* @type {ol3.Extent}
*/
this.extent = extent;
};
/**
* @param {ol3.Extent} extent Extent.
* @return {boolean} Intersects.
*/
ol3.CoverageArea.prototype.intersectsExtent = function(extent) {
return this.extent.intersects(extent);
};
/**
* @param {ol3.Extent} extent Extent.
* @param {number} resolution Resolution.
* @return {boolean} Intersects.
*/
ol3.CoverageArea.prototype.intersectsExtentAndResolution = goog.abstractMethod;
/**
* @param {ol3.TransformFunction} transformFn Transform.
* @return {ol3.CoverageArea} Transformed coverage area.
*/
ol3.CoverageArea.prototype.transform = function(transformFn) {
var extent = this.extent.transform(transformFn);
return new ol3.CoverageArea(extent);
};

View File

@@ -1,153 +0,0 @@
goog.provide('ol3.RendererHint');
goog.provide('ol3.createMap');
goog.require('goog.object');
goog.require('ol3.Collection');
goog.require('ol3.Map');
goog.require('ol3.MapProperty');
goog.require('ol3.Projection');
goog.require('ol3.interaction.AltDragRotate');
goog.require('ol3.interaction.CenterConstraint');
goog.require('ol3.interaction.Constraints');
goog.require('ol3.interaction.DblClickZoom');
goog.require('ol3.interaction.DragPan');
goog.require('ol3.interaction.KeyboardPan');
goog.require('ol3.interaction.KeyboardZoom');
goog.require('ol3.interaction.MouseWheelZoom');
goog.require('ol3.interaction.ResolutionConstraint');
goog.require('ol3.interaction.RotationConstraint');
goog.require('ol3.interaction.ShiftDragZoom');
goog.require('ol3.renderer.dom');
goog.require('ol3.renderer.dom.Map');
goog.require('ol3.renderer.webgl');
goog.require('ol3.renderer.webgl.Map');
/**
* @define {string} Default projection code.
*/
ol3.DEFAULT_PROJECTION_CODE = 'EPSG:3857';
/**
* @define {string} Default user projection code.
*/
ol3.DEFAULT_USER_PROJECTION_CODE = 'EPSG:4326';
/**
* @define {boolean} Whether to enable DOM.
*/
ol3.ENABLE_DOM = true;
/**
* @define {boolean} Whether to enable WebGL.
*/
ol3.ENABLE_WEBGL = true;
/**
* @enum {string}
*/
ol3.RendererHint = {
DOM: 'dom',
WEBGL: 'webgl'
};
/**
* @type {Array.<ol3.RendererHint>}
*/
ol3.DEFAULT_RENDERER_HINT = [
ol3.RendererHint.WEBGL,
ol3.RendererHint.DOM
];
/**
* @param {Element} target Target.
* @param {Object.<string, *>=} opt_values Values.
* @param {ol3.RendererHint|Array.<ol3.RendererHint>=} opt_rendererHints
* Renderer hints.
* @return {ol3.Map} Map.
*/
ol3.createMap = function(target, opt_values, opt_rendererHints) {
var values = {};
if (goog.isDef(opt_values)) {
goog.object.extend(values, opt_values);
}
// FIXME this should be a configuration option
var centerConstraint = ol3.interaction.CenterConstraint.snapToPixel;
var resolutionConstraint =
ol3.interaction.ResolutionConstraint.createSnapToPower(
Math.exp(Math.log(2) / 8), ol3.Projection.EPSG_3857_HALF_SIZE / 128);
var rotationConstraint = ol3.interaction.RotationConstraint.none;
var constraints = new ol3.interaction.Constraints(
centerConstraint, resolutionConstraint, rotationConstraint);
if (!goog.object.containsKey(values, ol3.MapProperty.INTERACTIONS)) {
var interactions = new ol3.Collection();
interactions.push(new ol3.interaction.AltDragRotate(constraints));
interactions.push(new ol3.interaction.DblClickZoom(constraints));
interactions.push(new ol3.interaction.DragPan(constraints));
interactions.push(new ol3.interaction.KeyboardPan(constraints, 16));
interactions.push(new ol3.interaction.KeyboardZoom(constraints));
interactions.push(new ol3.interaction.MouseWheelZoom(constraints));
interactions.push(new ol3.interaction.ShiftDragZoom(constraints));
values[ol3.MapProperty.INTERACTIONS] = interactions;
}
if (!goog.object.containsKey(values, ol3.MapProperty.LAYERS)) {
values[ol3.MapProperty.LAYERS] = new ol3.Collection();
}
if (!goog.object.containsKey(values, ol3.MapProperty.PROJECTION)) {
values[ol3.MapProperty.PROJECTION] =
ol3.Projection.getFromCode(ol3.DEFAULT_PROJECTION_CODE);
}
if (!goog.object.containsKey(values, ol3.MapProperty.USER_PROJECTION)) {
values[ol3.MapProperty.USER_PROJECTION] =
ol3.Projection.getFromCode(ol3.DEFAULT_USER_PROJECTION_CODE);
}
/**
* @type {Array.<ol3.RendererHint>}
*/
var rendererHints;
if (goog.isDef(opt_rendererHints)) {
if (goog.isArray(opt_rendererHints)) {
rendererHints = opt_rendererHints;
} else {
rendererHints = [opt_rendererHints];
}
} else {
rendererHints = ol3.DEFAULT_RENDERER_HINT;
}
var i, rendererHint, rendererConstructor;
for (i = 0; i < rendererHints.length; ++i) {
rendererHint = rendererHints[i];
if (rendererHint == ol3.RendererHint.DOM) {
if (ol3.ENABLE_DOM && ol3.renderer.dom.isSupported()) {
rendererConstructor = ol3.renderer.dom.Map;
break;
}
} else if (rendererHint == ol3.RendererHint.WEBGL) {
if (ol3.ENABLE_WEBGL && ol3.renderer.webgl.isSupported()) {
rendererConstructor = ol3.renderer.webgl.Map;
break;
}
}
}
if (goog.isDef(rendererConstructor)) {
return new ol3.Map(target, rendererConstructor, values);
} else {
return null;
}
};

View File

@@ -1,59 +0,0 @@
goog.provide('ol3.Extent');
goog.require('ol3.Coordinate');
goog.require('ol3.Rectangle');
goog.require('ol3.TransformFunction');
/**
* @constructor
* @extends {ol3.Rectangle}
* @param {number} minX Minimum X.
* @param {number} minY Minimum Y.
* @param {number} maxX Maximum X.
* @param {number} maxY Maximum Y.
*/
ol3.Extent = function(minX, minY, maxX, maxY) {
goog.base(this, minX, minY, maxX, maxY);
};
goog.inherits(ol3.Extent, ol3.Rectangle);
/**
* @param {...ol3.Coordinate} var_args Coordinates.
* @return {!ol3.Extent} Bounding extent.
*/
ol3.Extent.boundingExtent = function(var_args) {
var coordinate0 = arguments[0];
var extent = new ol3.Extent(coordinate0.x, coordinate0.y,
coordinate0.x, coordinate0.y);
var i;
for (i = 1; i < arguments.length; ++i) {
var coordinate = arguments[i];
extent.minX = Math.min(extent.minX, coordinate.x);
extent.minY = Math.min(extent.minY, coordinate.y);
extent.maxX = Math.max(extent.maxX, coordinate.x);
extent.maxY = Math.max(extent.maxY, coordinate.y);
}
return extent;
};
/**
* @return {ol3.Extent} Extent.
*/
ol3.Extent.prototype.clone = function() {
return new ol3.Extent(this.minX, this.minY, this.maxX, this.maxY);
};
/**
* @param {ol3.TransformFunction} transformFn Transform function.
* @return {ol3.Extent} Extent.
*/
ol3.Extent.prototype.transform = function(transformFn) {
var min = transformFn(new ol3.Coordinate(this.minX, this.minY));
var max = transformFn(new ol3.Coordinate(this.maxX, this.maxY));
return new ol3.Extent(min.x, min.y, max.x, max.y);
};

View File

@@ -1,47 +0,0 @@
goog.provide('ol3.interaction.CenterConstraint');
goog.provide('ol3.interaction.CenterConstraintType');
goog.require('ol3.Coordinate');
/**
* @typedef {function((ol3.Coordinate|undefined),
* (number|undefined),
* ol3.Coordinate): (ol3.Coordinate|undefined)}
*/
ol3.interaction.CenterConstraintType;
/**
* @param {ol3.Coordinate|undefined} center Center.
* @param {number|undefined} resolution Resolution.
* @param {ol3.Coordinate} delta Delta.
* @return {ol3.Coordinate|undefined} Center.
*/
ol3.interaction.CenterConstraint.none = function(center, resolution, delta) {
if (goog.isDefAndNotNull(center) && goog.isDef(resolution)) {
var x = center.x + delta.x;
var y = center.y + delta.y;
return new ol3.Coordinate(x, y);
} else {
return undefined;
}
};
/**
* @param {ol3.Coordinate|undefined} center Center.
* @param {number|undefined} resolution Resolution.
* @param {ol3.Coordinate} delta Delta.
* @return {ol3.Coordinate|undefined} Center.
*/
ol3.interaction.CenterConstraint.snapToPixel =
function(center, resolution, delta) {
if (goog.isDefAndNotNull(center) && goog.isDef(resolution)) {
var x = Math.floor((center.x + delta.x) / resolution + 0.5) * resolution;
var y = Math.floor((center.y + delta.y) / resolution + 0.5) * resolution;
return new ol3.Coordinate(x, y);
} else {
return undefined;
}
};

View File

@@ -1,36 +0,0 @@
goog.provide('ol3.interaction.Constraints');
goog.require('ol3.interaction.CenterConstraintType');
goog.require('ol3.interaction.ResolutionConstraintType');
goog.require('ol3.interaction.RotationConstraintType');
/**
* @constructor
* @param {ol3.interaction.CenterConstraintType} centerConstraint
* Center constraint.
* @param {ol3.interaction.ResolutionConstraintType} resolutionConstraint
* Resolution constraint.
* @param {ol3.interaction.RotationConstraintType} rotationConstraint
* Rotation constraint.
*/
ol3.interaction.Constraints =
function(centerConstraint, resolutionConstraint, rotationConstraint) {
/**
* @type {ol3.interaction.CenterConstraintType}
*/
this.center = centerConstraint;
/**
* @type {ol3.interaction.ResolutionConstraintType}
*/
this.resolution = resolutionConstraint;
/**
* @type {ol3.interaction.RotationConstraintType}
*/
this.rotation = rotationConstraint;
};

View File

@@ -1,48 +0,0 @@
goog.provide('ol3.interaction.DragPan');
goog.require('ol3.Coordinate');
goog.require('ol3.MapBrowserEvent');
goog.require('ol3.interaction.Constraints');
goog.require('ol3.interaction.Drag');
/**
* @constructor
* @extends {ol3.interaction.Drag}
* @param {ol3.interaction.Constraints} constraints Constraints.
*/
ol3.interaction.DragPan = function(constraints) {
goog.base(this, constraints);
};
goog.inherits(ol3.interaction.DragPan, ol3.interaction.Drag);
/**
* @inheritDoc
*/
ol3.interaction.DragPan.prototype.handleDrag = function(mapBrowserEvent) {
var map = mapBrowserEvent.map;
var resolution = map.getResolution();
var rotation = map.getRotation();
var delta =
new ol3.Coordinate(-resolution * this.deltaX, resolution * this.deltaY);
if (map.canRotate() && goog.isDef(rotation)) {
delta.rotate(rotation);
}
this.pan(map, delta, this.startCenter);
};
/**
* @inheritDoc
*/
ol3.interaction.DragPan.prototype.handleDragStart = function(mapBrowserEvent) {
var browserEvent = mapBrowserEvent.browserEvent;
if (!browserEvent.shiftKey) {
browserEvent.preventDefault();
return true;
} else {
return false;
}
};

View File

@@ -1,65 +0,0 @@
// FIXME draw drag box
goog.provide('ol3.interaction.ShiftDragZoom');
goog.require('ol3.Extent');
goog.require('ol3.MapBrowserEvent');
goog.require('ol3.interaction.Constraints');
goog.require('ol3.interaction.Drag');
/**
* @define {number} Hysterisis pixels.
*/
ol3.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS = 8;
/**
* @const {number}
*/
ol3.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS_SQUARED =
ol3.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS *
ol3.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS;
/**
* @constructor
* @extends {ol3.interaction.Drag}
* @param {ol3.interaction.Constraints} constraints Constraints.
*/
ol3.interaction.ShiftDragZoom = function(constraints) {
goog.base(this, constraints);
};
goog.inherits(ol3.interaction.ShiftDragZoom, ol3.interaction.Drag);
/**
* @inheritDoc
*/
ol3.interaction.ShiftDragZoom.prototype.handleDragEnd =
function(mapBrowserEvent) {
if (this.deltaX * this.deltaX + this.deltaY * this.deltaY >=
ol3.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS_SQUARED) {
var map = mapBrowserEvent.map;
var extent = ol3.Extent.boundingExtent(
this.startCoordinate,
mapBrowserEvent.getCoordinate());
this.fitExtent(map, extent);
}
};
/**
* @inheritDoc
*/
ol3.interaction.ShiftDragZoom.prototype.handleDragStart =
function(mapBrowserEvent) {
var browserEvent = mapBrowserEvent.browserEvent;
if (browserEvent.isMouseActionButton() && browserEvent.shiftKey) {
browserEvent.preventDefault();
return true;
} else {
return false;
}
};

View File

@@ -1,228 +0,0 @@
goog.provide('ol3.Layer');
goog.provide('ol3.LayerProperty');
goog.require('goog.math');
goog.require('ol3.Object');
goog.require('ol3.Store');
/**
* @enum {string}
*/
ol3.LayerProperty = {
BRIGHTNESS: 'brightness',
CONTRAST: 'contrast',
HUE: 'hue',
OPACITY: 'opacity',
SATURATION: 'saturation',
VISIBLE: 'visible'
};
/**
* @constructor
* @extends {ol3.Object}
* @param {ol3.Store} store Store.
* @param {Object.<string, *>=} opt_values Values.
*/
ol3.Layer = function(store, opt_values) {
goog.base(this);
/**
* @private
* @type {ol3.Store}
*/
this.store_ = store;
this.setBrightness(0);
this.setContrast(0);
this.setHue(0);
this.setOpacity(1);
this.setSaturation(0);
this.setVisible(true);
if (goog.isDef(opt_values)) {
this.setValues(opt_values);
}
};
goog.inherits(ol3.Layer, ol3.Object);
/**
* @return {number} Brightness.
*/
ol3.Layer.prototype.getBrightness = function() {
return /** @type {number} */ this.get(ol3.LayerProperty.BRIGHTNESS);
};
goog.exportProperty(
ol3.Layer.prototype,
'getBrightness',
ol3.Layer.prototype.getBrightness);
/**
* @return {number} Contrast.
*/
ol3.Layer.prototype.getContrast = function() {
return /** @type {number} */ this.get(ol3.LayerProperty.CONTRAST);
};
goog.exportProperty(
ol3.Layer.prototype,
'getContrast',
ol3.Layer.prototype.getContrast);
/**
* @return {number} Hue.
*/
ol3.Layer.prototype.getHue = function() {
return /** @type {number} */ this.get(ol3.LayerProperty.HUE);
};
goog.exportProperty(
ol3.Layer.prototype,
'getHue',
ol3.Layer.prototype.getHue);
/**
* @return {number} Opacity.
*/
ol3.Layer.prototype.getOpacity = function() {
return /** @type {number} */ this.get(ol3.LayerProperty.OPACITY);
};
goog.exportProperty(
ol3.Layer.prototype,
'getOpacity',
ol3.Layer.prototype.getOpacity);
/**
* @return {number} Saturation.
*/
ol3.Layer.prototype.getSaturation = function() {
return /** @type {number} */ this.get(ol3.LayerProperty.SATURATION);
};
goog.exportProperty(
ol3.Layer.prototype,
'getSaturation',
ol3.Layer.prototype.getSaturation);
/**
* @return {ol3.Store} Store.
*/
ol3.Layer.prototype.getStore = function() {
return this.store_;
};
/**
* @return {boolean} Visible.
*/
ol3.Layer.prototype.getVisible = function() {
return /** @type {boolean} */ this.get(ol3.LayerProperty.VISIBLE);
};
goog.exportProperty(
ol3.Layer.prototype,
'getVisible',
ol3.Layer.prototype.getVisible);
/**
* @return {boolean} Is ready.
*/
ol3.Layer.prototype.isReady = function() {
return this.getStore().isReady();
};
/**
* @param {number} brightness Brightness.
*/
ol3.Layer.prototype.setBrightness = function(brightness) {
brightness = goog.math.clamp(brightness, -1, 1);
if (brightness != this.getBrightness()) {
this.set(ol3.LayerProperty.BRIGHTNESS, brightness);
}
};
goog.exportProperty(
ol3.Layer.prototype,
'setBrightness',
ol3.Layer.prototype.setBrightness);
/**
* @param {number} contrast Contrast.
*/
ol3.Layer.prototype.setContrast = function(contrast) {
contrast = goog.math.clamp(contrast, -1, 1);
if (contrast != this.getContrast()) {
this.set(ol3.LayerProperty.CONTRAST, contrast);
}
};
goog.exportProperty(
ol3.Layer.prototype,
'setContrast',
ol3.Layer.prototype.setContrast);
/**
* @param {number} hue Hue.
*/
ol3.Layer.prototype.setHue = function(hue) {
if (hue != this.getHue()) {
this.set(ol3.LayerProperty.HUE, hue);
}
};
goog.exportProperty(
ol3.Layer.prototype,
'setHue',
ol3.Layer.prototype.setHue);
/**
* @param {number} opacity Opacity.
*/
ol3.Layer.prototype.setOpacity = function(opacity) {
opacity = goog.math.clamp(opacity, 0, 1);
if (opacity != this.getOpacity()) {
this.set(ol3.LayerProperty.OPACITY, opacity);
}
};
goog.exportProperty(
ol3.Layer.prototype,
'setOpacity',
ol3.Layer.prototype.setOpacity);
/**
* @param {number} saturation Saturation.
*/
ol3.Layer.prototype.setSaturation = function(saturation) {
saturation = goog.math.clamp(saturation, -1, 1);
if (saturation != this.getSaturation()) {
this.set(ol3.LayerProperty.SATURATION, saturation);
}
};
goog.exportProperty(
ol3.Layer.prototype,
'setSaturation',
ol3.Layer.prototype.setSaturation);
/**
* @param {boolean} visible Visible.
*/
ol3.Layer.prototype.setVisible = function(visible) {
visible = !!visible;
if (visible != this.getVisible()) {
this.set(ol3.LayerProperty.VISIBLE, visible);
}
};
goog.exportProperty(
ol3.Layer.prototype,
'setVisible',
ol3.Layer.prototype.setVisible);

View File

@@ -1,40 +0,0 @@
goog.provide('ol3.layer.OpenStreetMap');
goog.provide('ol3.store.OpenStreetMap');
goog.require('ol3.TileLayer');
goog.require('ol3.TileUrlFunction');
goog.require('ol3.tilestore.XYZ');
/**
* @constructor
* @extends {ol3.TileLayer}
* @param {Object.<string, *>=} opt_values Values.
*/
ol3.layer.OpenStreetMap = function(opt_values) {
var tileStore = new ol3.store.OpenStreetMap();
goog.base(this, tileStore, opt_values);
};
goog.inherits(ol3.layer.OpenStreetMap, ol3.TileLayer);
/**
* @constructor
* @extends {ol3.tilestore.XYZ}
*/
ol3.store.OpenStreetMap = function() {
var tileUrlFunction = ol3.TileUrlFunction.createFromTemplate(
'http://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png');
var attribution = new ol3.Attribution(
'&copy; <a href="http://www.openstreetmap.org">OpenStreetMap</a> ' +
'contributors, ' +
'<a href="http://creativecommons.org/licenses/by-sa/2.0/">CC BY-SA</a>');
goog.base(this, 18, tileUrlFunction, [attribution]);
};
goog.inherits(ol3.store.OpenStreetMap, ol3.tilestore.XYZ);

View File

@@ -1,118 +0,0 @@
goog.provide('ol3.layer.XYZ');
goog.provide('ol3.tilegrid.XYZ');
goog.provide('ol3.tilestore.XYZ');
goog.require('goog.math');
goog.require('ol3.Attribution');
goog.require('ol3.Coordinate');
goog.require('ol3.Layer');
goog.require('ol3.Projection');
goog.require('ol3.Size');
goog.require('ol3.TileCoord');
goog.require('ol3.TileGrid');
goog.require('ol3.TileLayer');
goog.require('ol3.TileStore');
goog.require('ol3.TileUrlFunction');
/**
* @constructor
* @extends {ol3.TileGrid}
* @param {number} maxZoom Maximum zoom.
* @param {ol3.Size=} opt_tileSize Tile size.
*/
ol3.tilegrid.XYZ = function(maxZoom, opt_tileSize) {
var resolutions = new Array(maxZoom + 1);
var z;
for (z = 0; z <= maxZoom; ++z) {
resolutions[z] = ol3.Projection.EPSG_3857_HALF_SIZE / (128 << z);
}
var extent = ol3.Projection.EPSG_3857_EXTENT;
var origin = new ol3.Coordinate(
-ol3.Projection.EPSG_3857_HALF_SIZE, ol3.Projection.EPSG_3857_HALF_SIZE);
goog.base(this, resolutions, extent, origin, opt_tileSize);
};
goog.inherits(ol3.tilegrid.XYZ, ol3.TileGrid);
/**
* @inheritDoc
*/
ol3.tilegrid.XYZ.prototype.forEachTileCoordParentTileBounds =
function(tileCoord, callback, opt_obj) {
var x = tileCoord.x;
var y = tileCoord.y;
var z = tileCoord.z;
var tileBounds;
while (true) {
z -= 1;
if (z < 0) {
break;
}
x = Math.floor(x / 2);
y = Math.floor(y / 2);
tileBounds = new ol3.TileBounds(x, y, x, y);
if (callback.call(opt_obj, z, tileBounds)) {
break;
}
}
};
/**
* @constructor
* @extends {ol3.TileLayer}
* @param {number} maxZoom Maximum zoom.
* @param {ol3.TileUrlFunctionType} tileUrlFunction Tile URL function.
* @param {Array.<ol3.Attribution>=} opt_attributions Attributions.
* @param {string=} opt_crossOrigin Cross origin.
* @param {Object.<string, *>=} opt_values Values.
*/
ol3.layer.XYZ = function(
maxZoom, tileUrlFunction, opt_attributions, opt_crossOrigin, opt_values) {
var tileStore = new ol3.tilestore.XYZ(
maxZoom, tileUrlFunction, opt_attributions, opt_crossOrigin);
goog.base(this, tileStore, opt_values);
};
goog.inherits(ol3.layer.XYZ, ol3.TileLayer);
/**
* @constructor
* @extends {ol3.TileStore}
* @param {number} maxZoom Maximum zoom.
* @param {ol3.TileUrlFunctionType} tileUrlFunction Tile URL function.
* @param {Array.<ol3.Attribution>=} opt_attributions Attributions.
* @param {string=} opt_crossOrigin Cross origin.
*/
ol3.tilestore.XYZ =
function(maxZoom, tileUrlFunction, opt_attributions, opt_crossOrigin) {
var projection = ol3.Projection.getFromCode('EPSG:3857');
var tileGrid = new ol3.tilegrid.XYZ(maxZoom);
var tileUrlFunction2 = ol3.TileUrlFunction.withTileCoordTransform(
function(tileCoord) {
var n = 1 << tileCoord.z;
var y = -tileCoord.y - 1;
if (y < 0 || n <= y) {
return null;
} else {
var x = goog.math.modulo(tileCoord.x, n);
return new ol3.TileCoord(tileCoord.z, x, y);
}
},
tileUrlFunction);
var extent = projection.getExtent();
goog.base(this, projection, tileGrid, tileUrlFunction2, extent,
opt_attributions, opt_crossOrigin);
};
goog.inherits(ol3.tilestore.XYZ, ol3.TileStore);

View File

@@ -1,24 +0,0 @@
goog.provide('ol3.Pixel');
goog.require('goog.math.Coordinate');
/**
* @constructor
* @extends {goog.math.Coordinate}
* @param {number} x X.
* @param {number} y Y.
*/
ol3.Pixel = function(x, y) {
goog.base(this, x, y);
};
goog.inherits(ol3.Pixel, goog.math.Coordinate);
/**
* @return {ol3.Pixel} Clone.
*/
ol3.Pixel.prototype.clone = function() {
return new ol3.Pixel(this.x, this.y);
};

View File

@@ -1,500 +0,0 @@
goog.provide('ol3.Projection');
goog.require('goog.array');
goog.require('goog.asserts');
goog.require('goog.object');
goog.require('ol3.Coordinate');
goog.require('ol3.Extent');
goog.require('ol3.TransformFunction');
/**
* @define {boolean} Enable Proj4js.
*/
ol3.ENABLE_PROJ4JS = true;
/**
* @enum {string}
*/
ol3.ProjectionUnits = {
DEGREES: 'degrees',
METERS: 'm'
};
/**
* @constructor
* @param {string} code Code.
* @param {ol3.ProjectionUnits} units Units.
* @param {ol3.Extent} extent Extent.
*/
ol3.Projection = function(code, units, extent) {
/**
* @private
* @type {string}
*/
this.code_ = code;
/**
* @private
* @type {ol3.ProjectionUnits}
*/
this.units_ = units;
/**
* @private
* @type {ol3.Extent}
*/
this.extent_ = extent;
};
/**
* @return {string} Code.
*/
ol3.Projection.prototype.getCode = function() {
return this.code_;
};
/**
* @return {ol3.Extent} Extent.
*/
ol3.Projection.prototype.getExtent = function() {
return this.extent_;
};
/**
* @return {ol3.ProjectionUnits} Units.
*/
ol3.Projection.prototype.getUnits = function() {
return this.units_;
};
/**
* @constructor
* @extends {ol3.Projection}
* @param {string} code Code.
* @param {Proj4js.Proj} proj4jsProj Proj4js projection.
*/
ol3.Proj4jsProjection = function(code, proj4jsProj) {
var units = /** @type {ol3.ProjectionUnits} */ proj4jsProj.units;
goog.base(this, code, units, null);
/**
* @private
* @type {Proj4js.Proj}
*/
this.proj4jsProj_ = proj4jsProj;
};
goog.inherits(ol3.Proj4jsProjection, ol3.Projection);
/**
* @return {Proj4js.Proj} Proj4js projection.
*/
ol3.Proj4jsProjection.prototype.getProj4jsProj = function() {
return this.proj4jsProj_;
};
/**
* @private
* @type {Object.<string, ol3.Proj4jsProjection>}
*/
ol3.Projection.proj4jsProjections_ = {};
/**
* @private
* @type {Object.<string, ol3.Projection>}
*/
ol3.Projection.projections_ = {};
/**
* @private
* @type {Object.<string, Object.<string, ol3.TransformFunction>>}
*/
ol3.Projection.transforms_ = {};
/**
* @param {Array.<ol3.Projection>} projections Projections.
* @private
*/
ol3.Projection.addEquivalentProjections_ = function(projections) {
ol3.Projection.addProjections(projections);
goog.array.forEach(projections, function(source) {
goog.array.forEach(projections, function(destination) {
ol3.Projection.addTransform(
source, destination, ol3.Projection.cloneTransform);
});
});
};
/**
* @param {Array.<ol3.Projection>} projections1 Projections.
* @param {Array.<ol3.Projection>} projections2 Projections.
* @param {ol3.TransformFunction} forwardTransform Forward transform.
* @param {ol3.TransformFunction} inverseTransform Inverse transform.
* @private
*/
ol3.Projection.addEquivalentTransforms_ =
function(projections1, projections2, forwardTransform, inverseTransform) {
goog.array.forEach(projections1, function(projection1) {
goog.array.forEach(projections2, function(projection2) {
ol3.Projection.addTransform(projection1, projection2, forwardTransform);
ol3.Projection.addTransform(projection2, projection1, inverseTransform);
});
});
};
/**
* @param {ol3.Proj4jsProjection} proj4jsProjection Proj4js projection.
*/
ol3.Projection.addProj4jsProjection = function(proj4jsProjection) {
var proj4jsProjections = ol3.Projection.proj4jsProjections_;
var code = proj4jsProjection.getCode();
goog.asserts.assert(!goog.object.containsKey(proj4jsProjections, code));
proj4jsProjections[code] = proj4jsProjection;
};
/**
* @param {ol3.Projection} projection Projection.
*/
ol3.Projection.addProjection = function(projection) {
var projections = ol3.Projection.projections_;
var code = projection.getCode();
goog.asserts.assert(!goog.object.containsKey(projections, code));
projections[code] = projection;
};
/**
* @param {Array.<ol3.Projection>} projections Projections.
*/
ol3.Projection.addProjections = function(projections) {
goog.array.forEach(projections, function(projection) {
ol3.Projection.addProjection(projection);
});
};
/**
* @param {ol3.Projection} source Source.
* @param {ol3.Projection} destination Destination.
* @param {ol3.TransformFunction} transformFn Transform.
*/
ol3.Projection.addTransform = function(source, destination, transformFn) {
var projections = ol3.Projection.projections_;
var sourceCode = source.getCode();
var destinationCode = destination.getCode();
var transforms = ol3.Projection.transforms_;
if (!goog.object.containsKey(transforms, sourceCode)) {
transforms[sourceCode] = {};
}
goog.asserts.assert(
!goog.object.containsKey(transforms[sourceCode], destinationCode));
transforms[sourceCode][destinationCode] = transformFn;
};
/**
* @param {string} code Code.
* @return {ol3.Projection} Projection.
*/
ol3.Projection.getFromCode = function(code) {
var projection = ol3.Projection.projections_[code];
if (ol3.Projection.isProj4jsSupported() && !goog.isDef(projection)) {
projection = ol3.Projection.getProj4jsProjectionFromCode_(code);
}
if (!goog.isDef(projection)) {
goog.asserts.assert(goog.isDef(projection));
projection = null;
}
return projection;
};
/**
* @param {string} code Code.
* @private
* @return {ol3.Proj4jsProjection} Proj4js projection.
*/
ol3.Projection.getProj4jsProjectionFromCode_ = function(code) {
var proj4jsProjections = ol3.Projection.proj4jsProjections_;
var proj4jsProjection = proj4jsProjections[code];
if (!goog.isDef(proj4jsProjection)) {
var proj4jsProj = new Proj4js.Proj(code);
proj4jsProjection = new ol3.Proj4jsProjection(code, proj4jsProj);
proj4jsProjections[code] = proj4jsProjection;
}
return proj4jsProjection;
};
/**
* @param {ol3.Projection} projection1 Projection 1.
* @param {ol3.Projection} projection2 Projection 2.
* @return {boolean} Equivalent.
*/
ol3.Projection.equivalent = function(projection1, projection2) {
if (projection1 === projection2) {
return true;
} else if (projection1.getUnits() != projection2.getUnits()) {
return false;
} else {
var transformFn = ol3.Projection.getTransform(projection1, projection2);
return transformFn === ol3.Projection.cloneTransform;
}
};
/**
* @param {ol3.Projection} source Source.
* @param {ol3.Projection} destination Destination.
* @return {ol3.TransformFunction} Transform.
*/
ol3.Projection.getTransform = function(source, destination) {
var transforms = ol3.Projection.transforms_;
var sourceCode = source.getCode();
var destinationCode = destination.getCode();
var transform;
if (goog.object.containsKey(transforms, sourceCode) &&
goog.object.containsKey(transforms[sourceCode], destinationCode)) {
transform = transforms[sourceCode][destinationCode];
}
if (ol3.Projection.isProj4jsSupported() && !goog.isDef(transform)) {
var proj4jsSource;
if (source instanceof ol3.Proj4jsProjection) {
proj4jsSource = source;
} else {
proj4jsSource =
ol3.Projection.getProj4jsProjectionFromCode_(source.getCode());
}
var sourceProj4jsProj = proj4jsSource.getProj4jsProj();
var proj4jsDestination;
if (destination instanceof ol3.Proj4jsProjection) {
proj4jsDestination = destination;
} else {
proj4jsDestination =
ol3.Projection.getProj4jsProjectionFromCode_(source.getCode());
}
var destinationProj4jsProj = proj4jsDestination.getProj4jsProj();
transform =
/**
* @param {ol3.Coordinate} coordinate Coordinate.
* @return {ol3.Coordinate} Coordinate.
*/
function(coordinate) {
var proj4jsPoint = new Proj4js.Point(coordinate.x, coordinate.y);
proj4jsPoint = Proj4js.transform(
sourceProj4jsProj, destinationProj4jsProj, proj4jsPoint);
return new ol3.Coordinate(proj4jsPoint.x, proj4jsPoint.y);
};
ol3.Projection.addTransform(source, destination, transform);
}
if (!goog.isDef(transform)) {
goog.asserts.assert(goog.isDef(transform));
transform = ol3.Projection.identityTransform;
}
return transform;
};
/**
* @param {string} sourceCode Source code.
* @param {string} destinationCode Destination code.
* @return {ol3.TransformFunction} Transform.
*/
ol3.Projection.getTransformFromCodes = function(sourceCode, destinationCode) {
var source = ol3.Projection.getFromCode(sourceCode);
var destination = ol3.Projection.getFromCode(destinationCode);
return ol3.Projection.getTransform(source, destination);
};
/**
* @return {boolean} Has Proj4js.
*/
ol3.Projection.isProj4jsSupported = function() {
return ol3.ENABLE_PROJ4JS && 'Proj4js' in goog.global;
};
/**
* @param {ol3.Coordinate} point Point.
* @return {ol3.Coordinate} Point.
*/
ol3.Projection.identityTransform = function(point) {
return point;
};
/**
* @param {ol3.Coordinate} point Point.
* @return {ol3.Coordinate} Point.
*/
ol3.Projection.cloneTransform = function(point) {
return point.clone();
};
/**
* @param {ol3.Coordinate} point Point.
* @param {ol3.Projection} source Source.
* @param {ol3.Projection} destination Destination.
* @return {ol3.Coordinate} Point.
*/
ol3.Projection.transform = function(point, source, destination) {
var transformFn = ol3.Projection.getTransform(source, destination);
return transformFn(point);
};
/**
* @param {ol3.Coordinate} point Point.
* @param {string} sourceCode Source code.
* @param {string} destinationCode Destination code.
* @return {ol3.Coordinate} Point.
*/
ol3.Projection.transformWithCodes =
function(point, sourceCode, destinationCode) {
var transformFn = ol3.Projection.getTransformFromCodes(
sourceCode, destinationCode);
return transformFn(point);
};
/**
* @const
* @type {number}
*/
ol3.Projection.EPSG_3857_RADIUS = 6378137;
/**
* @param {ol3.Coordinate} point Point.
* @return {ol3.Coordinate} Point.
*/
ol3.Projection.forwardSphericalMercator = function(point) {
var x = ol3.Projection.EPSG_3857_RADIUS * Math.PI * point.x / 180;
var y = ol3.Projection.EPSG_3857_RADIUS *
Math.log(Math.tan(Math.PI * (point.y + 90) / 360));
return new ol3.Coordinate(x, y);
};
/**
* @param {ol3.Coordinate} point Point.
* @return {ol3.Coordinate} Point.
*/
ol3.Projection.inverseSphericalMercator = function(point) {
var x = 180 * point.x / (ol3.Projection.EPSG_3857_RADIUS * Math.PI);
var y = 360 * Math.atan(
Math.exp(point.y / ol3.Projection.EPSG_3857_RADIUS)) / Math.PI - 90;
return new ol3.Coordinate(x, y);
};
/**
* @const
* @type {number}
*/
ol3.Projection.EPSG_3857_HALF_SIZE = Math.PI * ol3.Projection.EPSG_3857_RADIUS;
/**
* @const
* @type {ol3.Extent}
*/
ol3.Projection.EPSG_3857_EXTENT = new ol3.Extent(
-ol3.Projection.EPSG_3857_HALF_SIZE,
-ol3.Projection.EPSG_3857_HALF_SIZE,
ol3.Projection.EPSG_3857_HALF_SIZE,
ol3.Projection.EPSG_3857_HALF_SIZE);
/**
* @private
* @type {Array.<string>}
*/
ol3.Projection.EPSG_3857_LIKE_CODES_ = [
'EPSG:3857',
'EPSG:102100',
'EPSG:102113',
'EPSG:900913'
];
/**
* @const
* @private
* @type {Array.<ol3.Projection>}
*/
ol3.Projection.EPSG_3857_LIKE_PROJECTIONS_ = goog.array.map(
ol3.Projection.EPSG_3857_LIKE_CODES_,
function(code) {
return new ol3.Projection(
code,
ol3.ProjectionUnits.METERS,
ol3.Projection.EPSG_3857_EXTENT);
});
/**
* @const
* @private
* @type {ol3.Extent}
*/
ol3.Projection.EPSG_4326_EXTENT_ = new ol3.Extent(-180, -90, 180, 90);
/**
* @private
* @type {Array.<string>}
*/
ol3.Projection.EPSG_4326_LIKE_CODES_ = [
'CRS:84',
'EPSG:4326',
'urn:ogc:def:crs:EPSG:6.6:4326'
];
/**
* @const
* @type {Array.<ol3.Projection>}
*/
ol3.Projection.EPSG_4326_LIKE_PROJECTIONS = goog.array.map(
ol3.Projection.EPSG_4326_LIKE_CODES_,
function(code) {
return new ol3.Projection(
code,
ol3.ProjectionUnits.DEGREES,
ol3.Projection.EPSG_4326_EXTENT_);
});
ol3.Projection.addEquivalentProjections_(
ol3.Projection.EPSG_3857_LIKE_PROJECTIONS_);
ol3.Projection.addEquivalentProjections_(
ol3.Projection.EPSG_4326_LIKE_PROJECTIONS);
ol3.Projection.addEquivalentTransforms_(
ol3.Projection.EPSG_4326_LIKE_PROJECTIONS,
ol3.Projection.EPSG_3857_LIKE_PROJECTIONS_,
ol3.Projection.forwardSphericalMercator,
ol3.Projection.inverseSphericalMercator);

Some files were not shown because too many files have changed in this diff Show More