From 8df0cfb9d95821e53f6801776c71ff72901d2187 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Mon, 8 Oct 2012 12:55:20 +0200 Subject: [PATCH 01/26] Abstract out key conditions for interactions, fixes #51, see also #54 --- src/ol/interaction/condition.js | 56 +++++++++++++++++++ src/ol/interaction/dragpan.js | 14 ++++- .../{altdragrotate.js => dragrotate.js} | 20 +++++-- ...grotateandzoom.js => dragrotateandzoom.js} | 20 +++++-- .../{shiftdragzoom.js => dragzoom.js} | 20 +++++-- src/ol/map.js | 14 +++-- 6 files changed, 119 insertions(+), 25 deletions(-) create mode 100644 src/ol/interaction/condition.js rename src/ol/interaction/{altdragrotate.js => dragrotate.js} (63%) rename src/ol/interaction/{shiftdragrotateandzoom.js => dragrotateandzoom.js} (72%) rename src/ol/interaction/{shiftdragzoom.js => dragzoom.js} (70%) diff --git a/src/ol/interaction/condition.js b/src/ol/interaction/condition.js new file mode 100644 index 0000000000..81a34c4f63 --- /dev/null +++ b/src/ol/interaction/condition.js @@ -0,0 +1,56 @@ +goog.provide('ol.interaction.ConditionType'); +goog.provide('ol.interaction.condition'); + + +/** + * @typedef {function(goog.events.BrowserEvent): boolean} + */ +ol.interaction.ConditionType; + + +/** + * @param {goog.events.BrowserEvent} browserEvent Browser event. + * @return {boolean} True if only the alt key is pressed. + */ +ol.interaction.condition.altKeyOnly = function(browserEvent) { + return ( + browserEvent.altKey && + !browserEvent.platformModifierKey && + !browserEvent.shiftKey); +}; + + +/** + * @param {goog.events.BrowserEvent} browserEvent Browser event. + * @return {boolean} True if only the no modifier keys are pressed. + */ +ol.interaction.condition.noModifierKeys = function(browserEvent) { + return ( + !browserEvent.altKey && + !browserEvent.platformModifierKey && + !browserEvent.shiftKey); +}; + + +/** + * @param {goog.events.BrowserEvent} browserEvent Browser event. + * @return {boolean} True if only the platform modifier key is pressed. + */ +ol.interaction.condition.platformModifierKeyOnly = function(browserEvent) { + return ( + !browserEvent.altKey && + browserEvent.platformModifierKey && + !browserEvent.shiftKey); +}; + + +/** + * @param {goog.events.BrowserEvent} browserEvent Browser event. + * @return {boolean} True if only the shift key is pressed. + */ +ol.interaction.condition.shiftKeyOnly = function(browserEvent) { + return ( + !browserEvent.altKey && + !browserEvent.platformModifierKey && + browserEvent.shiftKey); +}; diff --git a/src/ol/interaction/dragpan.js b/src/ol/interaction/dragpan.js index 07e857be40..8a49b6846a 100644 --- a/src/ol/interaction/dragpan.js +++ b/src/ol/interaction/dragpan.js @@ -2,6 +2,7 @@ goog.provide('ol.interaction.DragPan'); goog.require('ol.Coordinate'); goog.require('ol.MapBrowserEvent'); +goog.require('ol.interaction.ConditionType'); goog.require('ol.interaction.Drag'); @@ -9,9 +10,18 @@ goog.require('ol.interaction.Drag'); /** * @constructor * @extends {ol.interaction.Drag} + * @param {ol.interaction.ConditionType} condition Condition. */ -ol.interaction.DragPan = function() { +ol.interaction.DragPan = function(condition) { + goog.base(this); + + /** + * @private + * @type {ol.interaction.ConditionType} + */ + this.condition_ = condition; + }; goog.inherits(ol.interaction.DragPan, ol.interaction.Drag); @@ -39,7 +49,7 @@ ol.interaction.DragPan.prototype.handleDrag = function(mapBrowserEvent) { */ ol.interaction.DragPan.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; - if (!browserEvent.shiftKey) { + if (this.condition_(browserEvent)) { return true; } else { return false; diff --git a/src/ol/interaction/altdragrotate.js b/src/ol/interaction/dragrotate.js similarity index 63% rename from src/ol/interaction/altdragrotate.js rename to src/ol/interaction/dragrotate.js index cb65554588..b40ab74690 100644 --- a/src/ol/interaction/altdragrotate.js +++ b/src/ol/interaction/dragrotate.js @@ -1,6 +1,7 @@ -goog.provide('ol.interaction.AltDragRotate'); +goog.provide('ol.interaction.DragRotate'); goog.require('ol.MapBrowserEvent'); +goog.require('ol.interaction.ConditionType'); goog.require('ol.interaction.Drag'); @@ -8,11 +9,18 @@ goog.require('ol.interaction.Drag'); /** * @constructor * @extends {ol.interaction.Drag} + * @param {ol.interaction.ConditionType} condition Condition. */ -ol.interaction.AltDragRotate = function() { +ol.interaction.DragRotate = function(condition) { goog.base(this); + /** + * @private + * @type {ol.interaction.ConditionType} + */ + this.condition_ = condition; + /** * @private * @type {number} @@ -20,13 +28,13 @@ ol.interaction.AltDragRotate = function() { this.startRotation_ = 0; }; -goog.inherits(ol.interaction.AltDragRotate, ol.interaction.Drag); +goog.inherits(ol.interaction.DragRotate, ol.interaction.Drag); /** * @inheritDoc */ -ol.interaction.AltDragRotate.prototype.handleDrag = function(mapBrowserEvent) { +ol.interaction.DragRotate.prototype.handleDrag = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; var map = mapBrowserEvent.map; var size = map.getSize(); @@ -41,11 +49,11 @@ ol.interaction.AltDragRotate.prototype.handleDrag = function(mapBrowserEvent) { /** * @inheritDoc */ -ol.interaction.AltDragRotate.prototype.handleDragStart = +ol.interaction.DragRotate.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; var map = mapBrowserEvent.map; - if (browserEvent.isMouseActionButton() && browserEvent.altKey && + if (browserEvent.isMouseActionButton() && this.condition_(browserEvent) && map.canRotate()) { var size = map.getSize(); var offset = mapBrowserEvent.getPixel(); diff --git a/src/ol/interaction/shiftdragrotateandzoom.js b/src/ol/interaction/dragrotateandzoom.js similarity index 72% rename from src/ol/interaction/shiftdragrotateandzoom.js rename to src/ol/interaction/dragrotateandzoom.js index 175a2a46b9..730b4def6a 100644 --- a/src/ol/interaction/shiftdragrotateandzoom.js +++ b/src/ol/interaction/dragrotateandzoom.js @@ -1,7 +1,8 @@ -goog.provide('ol.interaction.ShiftDragRotateAndZoom'); +goog.provide('ol.interaction.DragRotateAndZoom'); goog.require('goog.math.Vec2'); goog.require('ol.MapBrowserEvent'); +goog.require('ol.interaction.ConditionType'); goog.require('ol.interaction.Drag'); @@ -9,11 +10,18 @@ goog.require('ol.interaction.Drag'); /** * @constructor * @extends {ol.interaction.Drag} + * @param {ol.interaction.ConditionType} condition Condition. */ -ol.interaction.ShiftDragRotateAndZoom = function() { +ol.interaction.DragRotateAndZoom = function(condition) { goog.base(this); + /** + * @private + * @type {ol.interaction.ConditionType} + */ + this.condition_ = condition; + /** * @private * @type {number} @@ -27,13 +35,13 @@ ol.interaction.ShiftDragRotateAndZoom = function() { this.startRotation_ = 0; }; -goog.inherits(ol.interaction.ShiftDragRotateAndZoom, ol.interaction.Drag); +goog.inherits(ol.interaction.DragRotateAndZoom, ol.interaction.Drag); /** * @inheritDoc */ -ol.interaction.ShiftDragRotateAndZoom.prototype.handleDrag = +ol.interaction.DragRotateAndZoom.prototype.handleDrag = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; var map = mapBrowserEvent.map; @@ -52,11 +60,11 @@ ol.interaction.ShiftDragRotateAndZoom.prototype.handleDrag = /** * @inheritDoc */ -ol.interaction.ShiftDragRotateAndZoom.prototype.handleDragStart = +ol.interaction.DragRotateAndZoom.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; var map = mapBrowserEvent.map; - if (map.canRotate() && browserEvent.shiftKey) { + if (map.canRotate() && this.condition_(browserEvent)) { var resolution = map.getResolution(); var size = map.getSize(); var delta = new goog.math.Vec2( diff --git a/src/ol/interaction/shiftdragzoom.js b/src/ol/interaction/dragzoom.js similarity index 70% rename from src/ol/interaction/shiftdragzoom.js rename to src/ol/interaction/dragzoom.js index 7086ea0dc3..367b80000f 100644 --- a/src/ol/interaction/shiftdragzoom.js +++ b/src/ol/interaction/dragzoom.js @@ -1,10 +1,11 @@ // FIXME draw drag box -goog.provide('ol.interaction.ShiftDragZoom'); +goog.provide('ol.interaction.DragZoom'); goog.require('ol.Extent'); goog.require('ol.MapBrowserEvent'); goog.require('ol.control.DragBox'); +goog.require('ol.interaction.ConditionType'); goog.require('ol.interaction.Drag'); @@ -26,11 +27,18 @@ ol.SHIFT_DRAG_ZOOM_HYSTERESIS_PIXELS_SQUARED = /** * @constructor * @extends {ol.interaction.Drag} + * @param {ol.interaction.ConditionType} condition Condition. */ -ol.interaction.ShiftDragZoom = function() { +ol.interaction.DragZoom = function(condition) { goog.base(this); + /** + * @private + * @type {ol.interaction.ConditionType} + */ + this.condition_ = condition; + /** * @type {ol.control.DragBox} * @private @@ -39,13 +47,13 @@ ol.interaction.ShiftDragZoom = function() { }; -goog.inherits(ol.interaction.ShiftDragZoom, ol.interaction.Drag); +goog.inherits(ol.interaction.DragZoom, ol.interaction.Drag); /** * @inheritDoc */ -ol.interaction.ShiftDragZoom.prototype.handleDragEnd = +ol.interaction.DragZoom.prototype.handleDragEnd = function(mapBrowserEvent) { this.dragBox_.setMap(null); this.dragBox_ = null; @@ -63,10 +71,10 @@ ol.interaction.ShiftDragZoom.prototype.handleDragEnd = /** * @inheritDoc */ -ol.interaction.ShiftDragZoom.prototype.handleDragStart = +ol.interaction.DragZoom.prototype.handleDragStart = function(mapBrowserEvent) { var browserEvent = mapBrowserEvent.browserEvent; - if (browserEvent.isMouseActionButton() && browserEvent.shiftKey) { + if (browserEvent.isMouseActionButton() && this.condition_(browserEvent)) { this.dragBox_ = new ol.control.DragBox({ map: mapBrowserEvent.map, startCoordinate: this.startCoordinate diff --git a/src/ol/map.js b/src/ol/map.js index fe147e1541..5ce5c60163 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -41,14 +41,15 @@ goog.require('ol.Size'); goog.require('ol.TransformFunction'); goog.require('ol.control.Attribution'); goog.require('ol.control.Zoom'); -goog.require('ol.interaction.AltDragRotate'); goog.require('ol.interaction.DblClickZoom'); goog.require('ol.interaction.DragPan'); +goog.require('ol.interaction.DragRotate'); +goog.require('ol.interaction.DragZoom'); goog.require('ol.interaction.Interaction'); goog.require('ol.interaction.KeyboardPan'); goog.require('ol.interaction.KeyboardZoom'); goog.require('ol.interaction.MouseWheelZoom'); -goog.require('ol.interaction.ShiftDragZoom'); +goog.require('ol.interaction.condition'); goog.require('ol.renderer.Layer'); goog.require('ol.renderer.Map'); goog.require('ol.renderer.dom'); @@ -1129,7 +1130,8 @@ ol.Map.createInteractions_ = function(mapOptions) { var rotate = goog.isDef(mapOptions.rotate) ? mapOptions.rotate : true; if (rotate) { - interactions.push(new ol.interaction.AltDragRotate()); + interactions.push( + new ol.interaction.DragRotate(ol.interaction.condition.altKeyOnly)); } var doubleClickZoom = goog.isDef(mapOptions.doubleClickZoom) ? @@ -1143,7 +1145,8 @@ ol.Map.createInteractions_ = function(mapOptions) { var dragPan = goog.isDef(mapOptions.dragPan) ? mapOptions.dragPan : true; if (dragPan) { - interactions.push(new ol.interaction.DragPan()); + interactions.push( + new ol.interaction.DragPan(ol.interaction.condition.noModifierKeys)); } var keyboard = goog.isDef(mapOptions.keyboard) ? @@ -1167,7 +1170,8 @@ ol.Map.createInteractions_ = function(mapOptions) { var shiftDragZoom = goog.isDef(mapOptions.shiftDragZoom) ? mapOptions.shiftDragZoom : true; if (shiftDragZoom) { - interactions.push(new ol.interaction.ShiftDragZoom()); + interactions.push( + new ol.interaction.DragZoom(ol.interaction.condition.shiftKeyOnly)); } return interactions; From dc491f9114f9da1b4888844e7a2a633f20d378ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 10 Oct 2012 20:24:18 +0200 Subject: [PATCH 02/26] disposeInternal implementation for ol.Map --- src/ol/map.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/ol/map.js b/src/ol/map.js index fe147e1541..42dd95b574 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -290,6 +290,16 @@ ol.Map.prototype.canRotate = function() { }; +/** + * + * @inheritDoc + */ +ol.Map.prototype.disposeInternal = function() { + goog.base(this, 'disposeInternal'); + goog.dom.removeNode(this.viewport_); +}; + + /** * @param {ol.Extent} extent Extent. */ From 655e04368bb9cb2309359b02fbd50a40a1ca7167 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 10 Oct 2012 20:24:32 +0200 Subject: [PATCH 03/26] disposeInternal implementation for ol.control.Control --- src/ol/control/control.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ol/control/control.js b/src/ol/control/control.js index a640b2beca..5dda618613 100644 --- a/src/ol/control/control.js +++ b/src/ol/control/control.js @@ -49,6 +49,14 @@ ol.control.Control = function(controlOptions) { goog.inherits(ol.control.Control, goog.Disposable); +/** + * @inheritDoc + */ +ol.control.Control.prototype.disposeInternal = function() { + goog.dom.removeNode(this.element); +}; + + /** * @return {ol.Map} Map. */ From fbc810264bcec5d6ca2b42b5981c26b6ba0265c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Wed, 10 Oct 2012 20:25:53 +0200 Subject: [PATCH 04/26] goog.array.forEach does not accept null values --- src/ol/mapbrowserevent.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js index b5b8d49481..a2d241eda9 100644 --- a/src/ol/mapbrowserevent.js +++ b/src/ol/mapbrowserevent.js @@ -285,9 +285,10 @@ ol.MapBrowserEventHandler.prototype.disposeInternal = function() { this.handleUp_, false, this); goog.events.unlisten(element, goog.events.EventType.CLICK, this.click_, false, this); - goog.asserts.assert(goog.isDef(this.dragListenerKeys_)); - goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); - this.dragListenerKeys_ = null; + if (!goog.isNull(this.dragListenerKeys_)) { + goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); + this.dragListenerKeys_ = null; + } }; From 0b411ad69c5b630a68fd70199cd8022c332ec5b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Thu, 11 Oct 2012 17:46:22 +0200 Subject: [PATCH 05/26] Have disposeInternal call parent --- src/ol/control/control.js | 1 + src/ol/map.js | 2 +- src/ol/mapbrowserevent.js | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ol/control/control.js b/src/ol/control/control.js index 5dda618613..ad7ab15f7e 100644 --- a/src/ol/control/control.js +++ b/src/ol/control/control.js @@ -54,6 +54,7 @@ goog.inherits(ol.control.Control, goog.Disposable); */ ol.control.Control.prototype.disposeInternal = function() { goog.dom.removeNode(this.element); + goog.base(this, 'disposeInternal'); }; diff --git a/src/ol/map.js b/src/ol/map.js index 42dd95b574..9ed3f64a5f 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -295,8 +295,8 @@ ol.Map.prototype.canRotate = function() { * @inheritDoc */ ol.Map.prototype.disposeInternal = function() { - goog.base(this, 'disposeInternal'); goog.dom.removeNode(this.viewport_); + goog.base(this, 'disposeInternal'); }; diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js index a2d241eda9..63b3c956cd 100644 --- a/src/ol/mapbrowserevent.js +++ b/src/ol/mapbrowserevent.js @@ -289,6 +289,7 @@ ol.MapBrowserEventHandler.prototype.disposeInternal = function() { goog.array.forEach(this.dragListenerKeys_, goog.events.unlistenByKey); this.dragListenerKeys_ = null; } + goog.base(this, 'disposeInternal'); }; From 2a76a23b6f244af016038ad4c0abe4733fd4655f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Thu, 11 Oct 2012 17:46:47 +0200 Subject: [PATCH 06/26] Add tests for ol.control.Control --- test/ol.html | 2 ++ test/spec/ol/control/control.test.js | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 test/spec/ol/control/control.test.js diff --git a/test/ol.html b/test/ol.html index d504a2059c..1d438b53cd 100644 --- a/test/ol.html +++ b/test/ol.html @@ -83,6 +83,7 @@ + + diff --git a/examples/standalone/overlay-and-popup-standalone.html b/examples/standalone/overlay-and-popup-standalone.html index efd99db820..e1293b1c54 100644 --- a/examples/standalone/overlay-and-popup-standalone.html +++ b/examples/standalone/overlay-and-popup-standalone.html @@ -77,40 +77,6 @@ - + diff --git a/examples/standalone/side-by-side-standalone.html b/examples/standalone/side-by-side-standalone.html index 425dfb6409..e28c0425a7 100644 --- a/examples/standalone/side-by-side-standalone.html +++ b/examples/standalone/side-by-side-standalone.html @@ -66,92 +66,6 @@

Notes: The two maps share the same center, resolution, rotation and layers.

- + From ed197f3cfe9b1962e8586e0f71b91a51615dfb25 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Tue, 16 Oct 2012 10:59:53 +0200 Subject: [PATCH 13/26] Revert "Two lessons learned" This reverts commit f8462460bf82f46484149d52822d62a6ab660cfc. --- src/ol/renderer/dom/tilelayer.js | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/ol/renderer/dom/tilelayer.js b/src/ol/renderer/dom/tilelayer.js index 67f2199460..24de2b5eac 100644 --- a/src/ol/renderer/dom/tilelayer.js +++ b/src/ol/renderer/dom/tilelayer.js @@ -169,10 +169,10 @@ ol.renderer.dom.TileLayer.prototype.render = function() { } /** - * @type {Object.>} + * @type {Object.>} */ var tilesToDrawByZ = {}; - tilesToDrawByZ[String(z)] = {}; + tilesToDrawByZ[z] = {}; var tileRange = tileGrid.getTileRangeForExtentAndResolution(mapExtent, mapResolution); @@ -188,7 +188,7 @@ ol.renderer.dom.TileLayer.prototype.render = function() { var key = tile.tileCoord.toString(); if (tile.getState() == ol.TileState.LOADED) { - tilesToDrawByZ[String(z)][key] = tile; + tilesToDrawByZ[z][key] = tile; return; } else { if (!(key in this.loadingTiles_)) { @@ -198,7 +198,7 @@ ol.renderer.dom.TileLayer.prototype.render = function() { tile.load(); } // TODO: only append after load? - tilesToDrawByZ[String(z)][key] = tile; + tilesToDrawByZ[z][key] = tile; } /** @@ -210,12 +210,10 @@ ol.renderer.dom.TileLayer.prototype.render = function() { tileGrid.forEachTileCoordParentTileRange( tileCoord, function(altZ, altTileRange) { - altZ = String(altZ); var fullyCovered = true; altTileRange.forEachTileCoord(altZ, function(altTileCoord) { var tileKey = altTileCoord.toString(); - if (tilesToDrawByZ[altZ] && - tilesToDrawByZ[altZ][tileKey]) { + if (tilesToDrawByZ[altZ] && tilesToDrawByZ[altZ][tileKey]) { return; } var altTile = tileSource.getTile(altTileCoord); @@ -234,16 +232,17 @@ ol.renderer.dom.TileLayer.prototype.render = function() { }, this); + /** @type {Array.} */ var zs = goog.object.getKeys(tilesToDrawByZ); - zs.sort(function(a, b) {return a - b}); + goog.array.sort(zs); var fragment = document.createDocumentFragment(); var altFragment = document.createDocumentFragment(); var newTiles = false; var newAltTiles = false; for (var i = 0, ii = zs.length; i < ii; ++i) { - var tileZ = +zs[i]; - var tilesToDraw = tilesToDrawByZ[String(tileZ)]; + var tileZ = zs[i]; + var tilesToDraw = tilesToDrawByZ[tileZ]; var tileOffset = this.getTileOffset_(tileZ, mapResolution); for (var key in tilesToDraw) { var tile = tilesToDraw[key]; From 3e6d3748592ddcd2d09f170b3cb2940de7e54f9f Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Tue, 16 Oct 2012 11:04:56 +0200 Subject: [PATCH 14/26] Ensure z as object keys are sorted as numbers --- src/ol/renderer/dom/tilelayer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ol/renderer/dom/tilelayer.js b/src/ol/renderer/dom/tilelayer.js index 24de2b5eac..477eae9f3d 100644 --- a/src/ol/renderer/dom/tilelayer.js +++ b/src/ol/renderer/dom/tilelayer.js @@ -233,7 +233,7 @@ ol.renderer.dom.TileLayer.prototype.render = function() { }, this); /** @type {Array.} */ - var zs = goog.object.getKeys(tilesToDrawByZ); + var zs = goog.array.map(goog.object.getKeys(tilesToDrawByZ), Number); goog.array.sort(zs); var fragment = document.createDocumentFragment(); From 5c6b5cb4955b4ec6580e68fecad01fce9a176aa3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 16 Oct 2012 21:45:52 +0200 Subject: [PATCH 15/26] Add BingMaps exports --- src/ol/exports.txt | 10 ++++++++++ src/ol/source/bingmaps.js | 10 +--------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/ol/exports.txt b/src/ol/exports.txt index 6b6d09418c..f59f548c69 100644 --- a/src/ol/exports.txt +++ b/src/ol/exports.txt @@ -124,6 +124,16 @@ @exportProperty ol.overlay.Overlay.prototype.setMap @exportSymbol ol.source.BingMaps +@exportSymbol ol.BingMapsStyle +@exportProperty ol.BingMapsStyle.AERIAL +@exportProperty ol.BingMapsStyle.AERIAL_WITH_LABELS +@exportProperty ol.BingMapsStyle.ROAD +@exportProperty ol.BingMapsStyle.ORDNANCE_SURVEY +@exportProperty ol.BingMapsStyle.COLLINS_BART +@exportObjectLiteral ol.source.BingMapsOptions +@exportObjectLiteralProperty ol.source.BingMapsOptions.culture string|undefined +@exportObjectLiteralProperty ol.source.BingMapsOptions.key string +@exportObjectLiteralProperty ol.source.BingMapsOptions.style ol.BingMapsStyle @exportSymbol ol.source.MapQuestOSM diff --git a/src/ol/source/bingmaps.js b/src/ol/source/bingmaps.js index 339abd5811..d1b6bfd729 100644 --- a/src/ol/source/bingmaps.js +++ b/src/ol/source/bingmaps.js @@ -1,4 +1,5 @@ goog.provide('ol.source.BingMaps'); +goog.provide('ol.BingMapsStyle'); goog.require('goog.Uri'); goog.require('goog.events'); @@ -21,15 +22,6 @@ ol.BingMapsStyle = { }; -/** - * @typedef {{culture: (string|undefined), - * key: string, - * style: ol.BingMapsStyle}} - */ -ol.source.BingMapsOptions; - - - /** * @constructor * @extends {ol.source.TileSource} From 1f7ecd2529da3a43b4d4f43f5d751e9604d466a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 16 Oct 2012 21:50:20 +0200 Subject: [PATCH 16/26] Make linter happy --- src/ol/source/bingmaps.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ol/source/bingmaps.js b/src/ol/source/bingmaps.js index d1b6bfd729..1b805faf93 100644 --- a/src/ol/source/bingmaps.js +++ b/src/ol/source/bingmaps.js @@ -1,5 +1,5 @@ -goog.provide('ol.source.BingMaps'); goog.provide('ol.BingMapsStyle'); +goog.provide('ol.source.BingMaps'); goog.require('goog.Uri'); goog.require('goog.events'); @@ -22,6 +22,7 @@ ol.BingMapsStyle = { }; + /** * @constructor * @extends {ol.source.TileSource} From f4b20175cc9a9de7dfbebedb5476749f603060c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 16 Oct 2012 21:51:48 +0200 Subject: [PATCH 17/26] Add a specific loader for hosted examples This loader is responsible for adding ol.js, ol.css and the example-specific js script to the document. This is the loader used in examples when hosted. --- build/loader_hosted_examples.js | 46 +++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 build/loader_hosted_examples.js diff --git a/build/loader_hosted_examples.js b/build/loader_hosted_examples.js new file mode 100644 index 0000000000..3ec22aa5e2 --- /dev/null +++ b/build/loader_hosted_examples.js @@ -0,0 +1,46 @@ +/** + * + * Loader to add ol.css, ol.js and the example-specific js file to the + * documents. + * + * This loader is used for the hosted examples. It is used in place of the + * development loader (examples/loader.js). + * + * ol.css and ol.js are built with Plovr/Closure, based build/ol.json. + * (`make build` should build them). They are located in the ../build/ + * directory, relatively to this script. + * + * The script should be named loader.js. So it needs to be renamed to + * loader.js from loader_hosted_examples.js. + * + * Usage: + * + * + */ + +(function() { + var scripts = document.getElementsByTagName('script'); + + var i, src, index, search, chunks, pair, params = {}; + for (i = scripts.length - 1; i >= 0; --i) { + src = scripts[i].getAttribute('src'); + if (~(index = src.indexOf('loader.js?'))) { + search = src.substr(index + 10); + chunks = search ? search.split('&') : []; + for (i = chunks.length - 1; i >= 0; --i) { + pair = chunks[i].split('='); + params[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]); + } + break; + } + } + + document.write(''); + document.write('' + + ''); + document.write('' + + ''); +}()); From 190e21f79631dfc732152fc90563ad6eeb50810a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89ric=20Lemoine?= Date: Tue, 16 Oct 2012 21:55:12 +0200 Subject: [PATCH 18/26] The loader adds link tag for ol.css --- examples/full-screen.html | 1 - examples/loader.js | 2 ++ examples/overlay-and-popup.html | 1 - examples/side-by-side.html | 1 - examples/two-layers.html | 1 - 5 files changed, 2 insertions(+), 4 deletions(-) diff --git a/examples/full-screen.html b/examples/full-screen.html index f61977613c..a8ab852868 100644 --- a/examples/full-screen.html +++ b/examples/full-screen.html @@ -12,7 +12,6 @@ height: 100%; } - ol3 full-screen demo diff --git a/examples/loader.js b/examples/loader.js index 3ea91f7536..52feee5a4e 100644 --- a/examples/loader.js +++ b/examples/loader.js @@ -54,6 +54,8 @@ pairs.push(encodeURIComponent(key) + '=' + encodeURIComponent(params[key])); } + document.write(''); var url = 'http://' + host + '/compile?' + pairs.join('&'); document.write(''); }()); diff --git a/examples/overlay-and-popup.html b/examples/overlay-and-popup.html index 67bba0aa9b..fd0d44eaee 100644 --- a/examples/overlay-and-popup.html +++ b/examples/overlay-and-popup.html @@ -66,7 +66,6 @@ margin-left: -13px; } - ol3 overlay-and-popup demo diff --git a/examples/side-by-side.html b/examples/side-by-side.html index c1c16f3220..da4a0472e3 100644 --- a/examples/side-by-side.html +++ b/examples/side-by-side.html @@ -2,7 +2,6 @@ -