diff --git a/apidoc/index.md b/apidoc/index.md
index 906e07eed3..a0a54cfae3 100644
--- a/apidoc/index.md
+++ b/apidoc/index.md
@@ -6,7 +6,7 @@
[Creation](ol.Map.html#Map)
[Events](ol.MapBrowserEvent.html)
The view manages the visual parameters of the map view, like resolution or rotation.
-[ol.View2D](ol.View2D.html) with center, projection, resolution and rotation |
+[ol.View](ol.View.html) with center, projection, resolution and rotation
Layers are lightweight containers that get their data from [sources](ol.source.html).
[ol.layer.Tile](ol.layer.Tile.html)
[ol.layer.Image](ol.layer.Image.html)
diff --git a/doc/quickstart.hbs b/doc/quickstart.hbs
index b89d8a8a59..3868a3a91f 100644
--- a/doc/quickstart.hbs
+++ b/doc/quickstart.hbs
@@ -34,7 +34,7 @@ Below you'll find a complete working example. Create a new file, copy in the co
source: new ol.source.MapQuest({layer: 'sat'})
})
],
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
zoom: 4
})
@@ -88,7 +88,7 @@ The map in the application is contained in a [`` HTML element](http://en.wi
source: new ol.source.MapQuest({layer: 'sat'})
})
],
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
zoom: 4
})
@@ -121,10 +121,10 @@ The `layers: [ ... ]` array is used to define the list of layers available in th
Layers in OpenLayers 3 are defined with a type (Image, Tile or Vector) which contains a source. The source is the protocol used to get the map tiles. You can consult the list of [available layer sources here](/en/{{ latest }}/apidoc/ol.source.html)
-The next part of the `Map` object is the `View`. The view allow to specify the center, resolution, and rotation of the map. Right now, only `View2D` is supported, but other views should be available at some point. The simplest way to define a view is to define a center point and a zoom level. Note that zoom level 0 is zoomed out.
+The next part of the `Map` object is the `View`. The view allow to specify the center, resolution, and rotation of the map. The simplest way to define a view is to define a center point and a zoom level. Note that zoom level 0 is zoomed out.
```js
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
zoom: 4
})
diff --git a/doc/tutorials/concepts.hbs b/doc/tutorials/concepts.hbs
index 09110938c5..08f5888c19 100644
--- a/doc/tutorials/concepts.hbs
+++ b/doc/tutorials/concepts.hbs
@@ -16,16 +16,16 @@ The core component of OpenLayers 3 is the map (`ol.Map`). It is rendered to a `t
```
## View
-`ol.Map` is not responsible for things like center, zoom level and projection of the map. Instead, these are properties of an `ol.View` instance - typically an `ol.View2D` for 2D maps. The reason for this abstraction is the idea of instantly switching e.g. between a 2D and a tilted 3D view, without the need to maintain two copies of the `layers`.
+`ol.Map` is not responsible for things like center, zoom level and projection of the map. Instead, these are properties of an `ol.View` instance.
```js
- map.setView(new ol.View2D({
+ map.setView(new ol.View({
center: [0, 0],
zoom: 2
}));
```
-An `ol.View2D` also has a `projection`. The projection determines the coordinate system of the `center` and the units for map resolution calculations. If not specified (like in the above snippet), the default projection is Spherical Mercator (EPSG:3857), with meters as map units.
+An `ol.View` also has a `projection`. The projection determines the coordinate system of the `center` and the units for map resolution calculations. If not specified (like in the above snippet), the default projection is Spherical Mercator (EPSG:3857), with meters as map units.
The `zoom` option is a convenient way to specify the map resolution. The available zoom levels are determined by `maxZoom` (default: 28), `zoomFactor` (default: 2) and `maxResolution` (default is calculated in such a way that the projection's validity extent fits in a 256x256 pixel tile). Starting at zoom level 0 with a resolution of `maxResolution` units per pixel, subsequent zoom levels are calculated by dividing the previous zoom level's resolution by `zoomFactor`, until zoom level `maxZoom` is reached.
@@ -63,7 +63,7 @@ The above snippets can be conflated to a self contained map configuration with v
layers: [
new ol.layer.Tile({source: new ol.source.OSM()})
],
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
}),
diff --git a/examples/accessible.js b/examples/accessible.js
index 4f61352b2e..2d36f4c2f8 100644
--- a/examples/accessible.js
+++ b/examples/accessible.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
@@ -12,7 +12,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/animation.js b/examples/animation.js
index 3123a8db9d..8965908c0c 100644
--- a/examples/animation.js
+++ b/examples/animation.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.animation');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
@@ -40,7 +40,7 @@ var rome = ol.proj.transform([12.5, 41.9], 'EPSG:4326', 'EPSG:3857');
var bern = ol.proj.transform([7.4458, 46.95], 'EPSG:4326', 'EPSG:3857');
var madrid = ol.proj.transform([-3.683333, 40.4], 'EPSG:4326', 'EPSG:3857');
-var view = new ol.View2D({
+var view = new ol.View({
// the view's initial state
center: istanbul,
zoom: 6
diff --git a/examples/bind-input.js b/examples/bind-input.js
index 0ed834d695..421e721156 100644
--- a/examples/bind-input.js
+++ b/examples/bind-input.js
@@ -1,6 +1,6 @@
goog.require('ol.BrowserFeature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.dom.Input');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
@@ -20,7 +20,7 @@ var layer = new ol.layer.Tile({
});
layer.once('precompose', checkWebGL);
-var view = new ol.View2D({
+var view = new ol.View({
center: [0, 0],
zoom: 2
});
diff --git a/examples/bing-maps.js b/examples/bing-maps.js
index 873b412709..7b0a8e61e8 100644
--- a/examples/bing-maps.js
+++ b/examples/bing-maps.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.BingMaps');
@@ -27,7 +27,7 @@ var map = new ol.Map({
layers: layers,
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-6655.5402445057125, 6709968.258934638],
zoom: 13
})
diff --git a/examples/brightness-contrast.js b/examples/brightness-contrast.js
index 5911c2d5d1..c762e5e272 100644
--- a/examples/brightness-contrast.js
+++ b/examples/brightness-contrast.js
@@ -1,6 +1,6 @@
goog.require('ol.BrowserFeature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuest');
@@ -29,7 +29,7 @@ if (!ol.BrowserFeature.HAS_WEBGL) {
layers: [layer],
renderer: 'webgl',
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/canvas-tiles.js b/examples/canvas-tiles.js
index 9d113f9be1..120b0a4497 100644
--- a/examples/canvas-tiles.js
+++ b/examples/canvas-tiles.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.OSM');
@@ -23,7 +23,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform(
[-0.1275, 51.507222], 'EPSG:4326', 'EPSG:3857'),
zoom: 10
diff --git a/examples/center.js b/examples/center.js
index 4c4c436a27..64dd9cad97 100644
--- a/examples/center.js
+++ b/examples/center.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.Point');
goog.require('ol.geom.SimpleGeometry');
goog.require('ol.layer.Tile');
@@ -38,7 +38,7 @@ var vectorLayer = new ol.layer.Vector({
source: source,
style: style
});
-var view = new ol.View2D({
+var view = new ol.View({
center: [0, 0],
zoom: 1
});
diff --git a/examples/custom-controls.js b/examples/custom-controls.js
index 146860e4fc..ceca3ad3ba 100644
--- a/examples/custom-controls.js
+++ b/examples/custom-controls.js
@@ -1,6 +1,6 @@
goog.require('ol');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.control');
goog.require('ol.control.Control');
goog.require('ol.layer.Tile');
@@ -37,7 +37,7 @@ app.RotateNorthControl = function(opt_options) {
var handleRotateNorth = function(e) {
// prevent #rotate-north anchor from getting appended to the url
e.preventDefault();
- this_.getMap().getView().getView2D().setRotation(0);
+ this_.getMap().getView().setRotation(0);
};
anchor.addEventListener('click', handleRotateNorth, false);
@@ -72,7 +72,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2,
rotation: 1
diff --git a/examples/d3.js b/examples/d3.js
index 9d43422617..861c09208d 100644
--- a/examples/d3.js
+++ b/examples/d3.js
@@ -2,7 +2,7 @@
// this example uses d3 for which we don't have an externs file.
goog.require('ol');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.extent');
goog.require('ol.layer.Image');
goog.require('ol.layer.Tile');
@@ -20,7 +20,7 @@ var map = new ol.Map({
})
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([-97, 38], 'EPSG:4326', 'EPSG:3857'),
zoom: 4
})
diff --git a/examples/device-orientation.js b/examples/device-orientation.js
index a8786b8252..d905ec97d2 100644
--- a/examples/device-orientation.js
+++ b/examples/device-orientation.js
@@ -1,13 +1,13 @@
goog.require('ol.DeviceOrientation');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.dom.Input');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.OSM');
var projection = ol.proj.get('EPSG:3857');
-var view = new ol.View2D({
+var view = new ol.View({
center: [0, 0],
projection: projection,
extent: projection.getExtent(),
diff --git a/examples/drag-and-drop-image-vector.js b/examples/drag-and-drop-image-vector.js
index 18cb0812e6..90a6f54b83 100644
--- a/examples/drag-and-drop-image-vector.js
+++ b/examples/drag-and-drop-image-vector.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.format.GPX');
goog.require('ol.format.GeoJSON');
goog.require('ol.format.IGC');
@@ -106,7 +106,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
@@ -123,8 +123,9 @@ dragAndDropInteraction.on('addfeatures', function(event) {
style: styleFunction
})
}));
- var view2D = map.getView().getView2D();
- view2D.fitExtent(vectorSource.getExtent(), map.getSize());
+ var view = map.getView();
+ view.fitExtent(
+ vectorSource.getExtent(), /** @type {ol.Size} */ (map.getSize()));
});
var displayFeatureInfo = function(pixel) {
diff --git a/examples/drag-and-drop.js b/examples/drag-and-drop.js
index 9225d8fcd5..c481a7f9a9 100644
--- a/examples/drag-and-drop.js
+++ b/examples/drag-and-drop.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.format.GPX');
goog.require('ol.format.GeoJSON');
goog.require('ol.format.IGC');
@@ -104,7 +104,7 @@ var map = new ol.Map({
})
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
@@ -119,8 +119,9 @@ dragAndDropInteraction.on('addfeatures', function(event) {
source: vectorSource,
style: styleFunction
}));
- var view2D = map.getView().getView2D();
- view2D.fitExtent(vectorSource.getExtent(), map.getSize());
+ var view = map.getView();
+ view.fitExtent(
+ vectorSource.getExtent(), /** @type {ol.Size} */ (map.getSize()));
});
var displayFeatureInfo = function(pixel) {
diff --git a/examples/drag-rotate-and-zoom.js b/examples/drag-rotate-and-zoom.js
index 51f98c974e..50dd2f1837 100644
--- a/examples/drag-rotate-and-zoom.js
+++ b/examples/drag-rotate-and-zoom.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.interaction');
goog.require('ol.interaction.DragRotateAndZoom');
goog.require('ol.layer.Tile');
@@ -17,7 +17,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/draw-and-modify-features.js b/examples/draw-and-modify-features.js
index e75f2049fd..d6c1de8f74 100644
--- a/examples/draw-and-modify-features.js
+++ b/examples/draw-and-modify-features.js
@@ -1,6 +1,6 @@
goog.require('ol.FeatureOverlay');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.events.condition');
goog.require('ol.interaction');
goog.require('ol.interaction.Draw');
@@ -19,7 +19,7 @@ var raster = new ol.layer.Tile({
var map = new ol.Map({
layers: [raster],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-11000000, 4600000],
zoom: 4
})
diff --git a/examples/draw-features.js b/examples/draw-features.js
index 50df83a6b2..59cc07984e 100644
--- a/examples/draw-features.js
+++ b/examples/draw-features.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.interaction');
goog.require('ol.interaction.Draw');
goog.require('ol.layer.Tile');
@@ -39,7 +39,7 @@ var vector = new ol.layer.Vector({
var map = new ol.Map({
layers: [raster, vector],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-11000000, 4600000],
zoom: 4
})
diff --git a/examples/dynamic-data.js b/examples/dynamic-data.js
index 313fa14bba..00d87e840e 100644
--- a/examples/dynamic-data.js
+++ b/examples/dynamic-data.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.MultiPoint');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuest');
@@ -15,7 +15,7 @@ var map = new ol.Map({
})
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/epsg-4326.js b/examples/epsg-4326.js
index 9f91e250bb..30f0f0c2dd 100644
--- a/examples/epsg-4326.js
+++ b/examples/epsg-4326.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.control');
goog.require('ol.control.ScaleLine');
goog.require('ol.layer.Tile');
@@ -27,7 +27,7 @@ var map = new ol.Map({
]),
layers: layers,
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
projection: 'EPSG:4326',
center: [0, 0],
zoom: 2
diff --git a/examples/export-map.js b/examples/export-map.js
index ce042c1610..747c5dedb7 100644
--- a/examples/export-map.js
+++ b/examples/export-map.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
@@ -11,7 +11,7 @@ var map = new ol.Map({
})
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/fractal.js b/examples/fractal.js
index b2cb5dc404..fb0cbeabc1 100644
--- a/examples/fractal.js
+++ b/examples/fractal.js
@@ -1,6 +1,6 @@
goog.require('ol.Feature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.LineString');
goog.require('ol.layer.Vector');
goog.require('ol.source.Vector');
@@ -26,7 +26,7 @@ var layer = new ol.layer.Vector({
var map = new ol.Map({
layers: [layer],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 1
})
diff --git a/examples/full-screen-drag-rotate-and-zoom.js b/examples/full-screen-drag-rotate-and-zoom.js
index a675b04615..c96130a5b4 100644
--- a/examples/full-screen-drag-rotate-and-zoom.js
+++ b/examples/full-screen-drag-rotate-and-zoom.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.control');
goog.require('ol.control.FullScreen');
goog.require('ol.interaction');
@@ -25,7 +25,7 @@ var map = new ol.Map({
],
// Use the canvas renderer because it's currently the fastest
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-33519607, 5616436],
rotation: -Math.PI / 8,
zoom: 8
diff --git a/examples/full-screen.js b/examples/full-screen.js
index 18a615b854..f23b983b65 100644
--- a/examples/full-screen.js
+++ b/examples/full-screen.js
@@ -1,12 +1,12 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.control');
goog.require('ol.control.FullScreen');
goog.require('ol.layer.Tile');
goog.require('ol.source.BingMaps');
-var view = new ol.View2D({
+var view = new ol.View({
center: [-9101767, 2822912],
zoom: 14
});
diff --git a/examples/geojson.js b/examples/geojson.js
index c957e42c2a..fe22fd08e0 100644
--- a/examples/geojson.js
+++ b/examples/geojson.js
@@ -1,6 +1,6 @@
goog.require('ol.Feature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.Circle');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
@@ -188,7 +188,7 @@ var map = new ol.Map({
vectorLayer
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/geolocation-orientation.js b/examples/geolocation-orientation.js
index 093c4e08a8..4ac409b15b 100644
--- a/examples/geolocation-orientation.js
+++ b/examples/geolocation-orientation.js
@@ -1,14 +1,14 @@
goog.require('ol.Geolocation');
goog.require('ol.Map');
goog.require('ol.Overlay');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.LineString');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.OSM');
// creating the view
-var view = new ol.View2D({
+var view = new ol.View({
center: ol.proj.transform([5.8713, 45.6452], 'EPSG:4326', 'EPSG:3857'),
zoom: 19
});
@@ -134,7 +134,7 @@ map.beforeRender(function(map, frameState) {
previousM = m;
// interpolate position along positions LineString
var c = positions.getCoordinateAtM(m, true);
- var view = frameState.view2DState;
+ var view = frameState.viewState;
if (c) {
view.center = getCenterWithHeading(c, -c[2], view.resolution);
view.rotation = -c[2];
diff --git a/examples/geolocation.js b/examples/geolocation.js
index 21f48d5851..3d99af6f03 100644
--- a/examples/geolocation.js
+++ b/examples/geolocation.js
@@ -2,14 +2,14 @@ goog.require('ol.Feature');
goog.require('ol.FeatureOverlay');
goog.require('ol.Geolocation');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.dom.Input');
goog.require('ol.geom.Point');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
-var view = new ol.View2D({
+var view = new ol.View({
center: [0, 0],
zoom: 2
});
diff --git a/examples/getfeatureinfo.js b/examples/getfeatureinfo.js
index 0c60b15c3d..96c063f425 100644
--- a/examples/getfeatureinfo.js
+++ b/examples/getfeatureinfo.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.TileWMS');
@@ -13,7 +13,7 @@ var wmsLayer = new ol.layer.Tile({
source: wmsSource
});
-var view = new ol.View2D({
+var view = new ol.View({
center: [0, 0],
zoom: 1
});
diff --git a/examples/google-map.js b/examples/google-map.js
index 24a2369596..43ae66c77a 100644
--- a/examples/google-map.js
+++ b/examples/google-map.js
@@ -1,7 +1,7 @@
// NOCOMPILE
// This example uses the GMapx v3 API, which we do not have an exports file for.
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.interaction');
goog.require('ol.interaction.DragPan');
goog.require('ol.layer.Vector');
@@ -21,7 +21,7 @@ var gmap = new google.maps.Map(document.getElementById('gmap'), {
streetViewControl: false
});
-var view = new ol.View2D({
+var view = new ol.View({
// make sure the view doesn't go beyond the 22 zoom levels of Google Maps
maxZoom: 21
});
diff --git a/examples/gpx.js b/examples/gpx.js
index 7936ef5f87..5f4a84c6c4 100644
--- a/examples/gpx.js
+++ b/examples/gpx.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.source.BingMaps');
@@ -56,7 +56,7 @@ var vector = new ol.layer.Vector({
var map = new ol.Map({
layers: [raster, vector],
target: document.getElementById('map'),
- view: new ol.View2D({
+ view: new ol.View({
center: [-7916041.528716288, 5228379.045749711],
zoom: 12
})
diff --git a/examples/heatmap-earthquakes.js b/examples/heatmap-earthquakes.js
index 3766a28e94..ab49880783 100644
--- a/examples/heatmap-earthquakes.js
+++ b/examples/heatmap-earthquakes.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Heatmap');
goog.require('ol.layer.Tile');
goog.require('ol.source.KML');
@@ -32,7 +32,7 @@ var raster = new ol.layer.Tile({
var map = new ol.Map({
layers: [raster, vector],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/hue-saturation.js b/examples/hue-saturation.js
index 254f85648c..61aba6c102 100644
--- a/examples/hue-saturation.js
+++ b/examples/hue-saturation.js
@@ -1,6 +1,6 @@
goog.require('ol.BrowserFeature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.BingMaps');
@@ -33,7 +33,7 @@ if (!ol.BrowserFeature.HAS_WEBGL) {
layers: [layer],
renderer: 'webgl',
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([-9.375, 51.483333], 'EPSG:4326', 'EPSG:3857'),
zoom: 15
})
diff --git a/examples/icon.js b/examples/icon.js
index d94e335313..d510cf16fa 100644
--- a/examples/icon.js
+++ b/examples/icon.js
@@ -1,7 +1,7 @@
goog.require('ol.Feature');
goog.require('ol.Map');
goog.require('ol.Overlay');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.Point');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
@@ -47,7 +47,7 @@ var rasterLayer = new ol.layer.Tile({
var map = new ol.Map({
layers: [rasterLayer, vectorLayer],
target: document.getElementById('map'),
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 3
})
diff --git a/examples/igc.js b/examples/igc.js
index 5a25ac55a7..33b5924140 100644
--- a/examples/igc.js
+++ b/examples/igc.js
@@ -2,7 +2,7 @@ goog.require('ol.Attribution');
goog.require('ol.Feature');
goog.require('ol.FeatureOverlay');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.LineString');
goog.require('ol.geom.Point');
goog.require('ol.layer.Tile');
@@ -83,7 +83,7 @@ var map = new ol.Map({
})
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [703365.7089403362, 5714629.865071137],
zoom: 9
})
diff --git a/examples/image-filter.js b/examples/image-filter.js
index 99d8c06d65..a94de1f14c 100644
--- a/examples/image-filter.js
+++ b/examples/image-filter.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.BingMaps');
@@ -13,7 +13,7 @@ var imagery = new ol.layer.Tile({
var map = new ol.Map({
layers: [imagery],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([-120, 50], 'EPSG:4326', 'EPSG:3857'),
zoom: 6
})
diff --git a/examples/image-vector-layer.js b/examples/image-vector-layer.js
index f5dbd3520e..01e79fe4e8 100644
--- a/examples/image-vector-layer.js
+++ b/examples/image-vector-layer.js
@@ -1,6 +1,6 @@
goog.require('ol.FeatureOverlay');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Image');
goog.require('ol.layer.Tile');
goog.require('ol.source.GeoJSON');
@@ -35,7 +35,7 @@ var map = new ol.Map({
})
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 1
})
diff --git a/examples/kml-earthquakes.js b/examples/kml-earthquakes.js
index ca6d3d5901..db86d9b501 100644
--- a/examples/kml-earthquakes.js
+++ b/examples/kml-earthquakes.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.source.KML');
@@ -54,7 +54,7 @@ var raster = new ol.layer.Tile({
var map = new ol.Map({
layers: [raster, vector],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/kml-timezones.js b/examples/kml-timezones.js
index 33da7c2e7b..56441f2584 100644
--- a/examples/kml-timezones.js
+++ b/examples/kml-timezones.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.source.KML');
@@ -61,7 +61,7 @@ var raster = new ol.layer.Tile({
var map = new ol.Map({
layers: [raster, vector],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/kml.js b/examples/kml.js
index 5c8a91f17d..ca4c23ac96 100644
--- a/examples/kml.js
+++ b/examples/kml.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.format.KML');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
@@ -26,7 +26,7 @@ var vector = new ol.layer.Vector({
var map = new ol.Map({
layers: [raster, vector],
target: document.getElementById('map'),
- view: new ol.View2D({
+ view: new ol.View({
center: [876970.8463461736, 5859807.853963373],
projection: projection,
zoom: 10
diff --git a/examples/layer-clipping-webgl.js b/examples/layer-clipping-webgl.js
index 3733e2ea1f..4644390085 100644
--- a/examples/layer-clipping-webgl.js
+++ b/examples/layer-clipping-webgl.js
@@ -1,6 +1,6 @@
goog.require('ol.BrowserFeature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
@@ -20,7 +20,7 @@ if (!ol.BrowserFeature.HAS_WEBGL) {
layers: [osm],
renderer: 'webgl',
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/layer-clipping.js b/examples/layer-clipping.js
index eb0e9cc39d..5395501249 100644
--- a/examples/layer-clipping.js
+++ b/examples/layer-clipping.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
@@ -10,7 +10,7 @@ var osm = new ol.layer.Tile({
var map = new ol.Map({
layers: [osm],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/layer-group.js b/examples/layer-group.js
index 1134b53831..4ec21fc23d 100644
--- a/examples/layer-group.js
+++ b/examples/layer-group.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.dom.Input');
goog.require('ol.layer.Group');
goog.require('ol.layer.Tile');
@@ -32,7 +32,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([37.40570, 8.81566], 'EPSG:4326', 'EPSG:3857'),
zoom: 4
})
diff --git a/examples/layer-spy.js b/examples/layer-spy.js
index b342150efb..2eea7e344a 100644
--- a/examples/layer-spy.js
+++ b/examples/layer-spy.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.BingMaps');
@@ -17,7 +17,7 @@ var imagery = new ol.layer.Tile({
var map = new ol.Map({
layers: [roads, imagery],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([-109, 46.5], 'EPSG:4326', 'EPSG:3857'),
zoom: 6
})
diff --git a/examples/layer-swipe.js b/examples/layer-swipe.js
index fc6c30e196..8b81ed6f05 100644
--- a/examples/layer-swipe.js
+++ b/examples/layer-swipe.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.BingMaps');
goog.require('ol.source.OSM');
@@ -17,7 +17,7 @@ var bing = new ol.layer.Tile({
var map = new ol.Map({
layers: [osm, bing],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/localized-openstreetmap.js b/examples/localized-openstreetmap.js
index 38cbeb8a53..2018d609ca 100644
--- a/examples/localized-openstreetmap.js
+++ b/examples/localized-openstreetmap.js
@@ -1,6 +1,6 @@
goog.require('ol.Attribution');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
@@ -42,7 +42,7 @@ var map = new ol.Map({
openSeaMapLayer
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
maxZoom: 18,
center: [-244780.24508882355, 5986452.183179816],
zoom: 15
diff --git a/examples/mapguide-untiled.js b/examples/mapguide-untiled.js
index 2ad42ce58d..d3908b1ed9 100644
--- a/examples/mapguide-untiled.js
+++ b/examples/mapguide-untiled.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Image');
goog.require('ol.source.MapGuide');
@@ -30,7 +30,7 @@ var map = new ol.Map({
})
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-87.7302542509315, 43.744459064634],
projection: 'EPSG:4326',
zoom: 12
diff --git a/examples/mapquest.js b/examples/mapquest.js
index 2935d526d4..f2bdf0246e 100644
--- a/examples/mapquest.js
+++ b/examples/mapquest.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Group');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
@@ -34,7 +34,7 @@ var map = new ol.Map({
layers: layers,
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform(
[-73.979378, 40.702222], 'EPSG:4326', 'EPSG:3857'),
zoom: 9
diff --git a/examples/measure.js b/examples/measure.js
index 26b73efde3..6f6c9f27b6 100644
--- a/examples/measure.js
+++ b/examples/measure.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.LineString');
goog.require('ol.geom.Polygon');
goog.require('ol.interaction');
@@ -75,7 +75,7 @@ var mouseMoveHandler = function(evt) {
var map = new ol.Map({
layers: [raster, vector],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-11000000, 4600000],
zoom: 15
})
diff --git a/examples/min-max-resolution.js b/examples/min-max-resolution.js
index 75805bf4d8..b59a6b0836 100644
--- a/examples/min-max-resolution.js
+++ b/examples/min-max-resolution.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
goog.require('ol.source.TileJSON');
@@ -27,7 +27,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [653600, 5723680],
zoom: 5
})
diff --git a/examples/mobile-full-screen.js b/examples/mobile-full-screen.js
index 15b218a46b..63441b0de7 100644
--- a/examples/mobile-full-screen.js
+++ b/examples/mobile-full-screen.js
@@ -1,11 +1,11 @@
goog.require('ol.Geolocation');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.BingMaps');
-var view = new ol.View2D({
+var view = new ol.View({
center: [0, 0],
zoom: 2
});
diff --git a/examples/modify-features.js b/examples/modify-features.js
index 512a768dde..d3b6948502 100644
--- a/examples/modify-features.js
+++ b/examples/modify-features.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.interaction');
goog.require('ol.interaction.Modify');
goog.require('ol.interaction.Select');
@@ -32,7 +32,7 @@ var map = new ol.Map({
interactions: ol.interaction.defaults().extend([select, modify]),
layers: [raster, vector],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/modify-test.js b/examples/modify-test.js
index 173b4e3848..230889d67f 100644
--- a/examples/modify-test.js
+++ b/examples/modify-test.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.interaction');
goog.require('ol.interaction.Modify');
goog.require('ol.interaction.Select');
@@ -243,7 +243,7 @@ var map = new ol.Map({
interactions: ol.interaction.defaults().extend([select, modify]),
layers: [layer],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 1000000],
zoom: 2
})
diff --git a/examples/mouse-position.js b/examples/mouse-position.js
index 1945a3ffb0..d451a16708 100644
--- a/examples/mouse-position.js
+++ b/examples/mouse-position.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.control');
goog.require('ol.control.MousePosition');
goog.require('ol.coordinate');
@@ -27,7 +27,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/moveend.js b/examples/moveend.js
index a587e3c875..46340d3716 100644
--- a/examples/moveend.js
+++ b/examples/moveend.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.extent');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
@@ -14,7 +14,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/navigation-controls.js b/examples/navigation-controls.js
index 4ecb21d522..04538f83b7 100644
--- a/examples/navigation-controls.js
+++ b/examples/navigation-controls.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.control');
goog.require('ol.control.ZoomToExtent');
goog.require('ol.layer.Tile');
@@ -22,7 +22,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/overlay.js b/examples/overlay.js
index ebc0c11eef..76cde5c48f 100644
--- a/examples/overlay.js
+++ b/examples/overlay.js
@@ -1,6 +1,6 @@
goog.require('ol.Map');
goog.require('ol.Overlay');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.coordinate');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
@@ -15,7 +15,7 @@ var map = new ol.Map({
layers: [layer],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/popup.js b/examples/popup.js
index ac59cedd5e..3cdb5acbaf 100644
--- a/examples/popup.js
+++ b/examples/popup.js
@@ -1,6 +1,6 @@
goog.require('ol.Map');
goog.require('ol.Overlay');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.coordinate');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
@@ -50,7 +50,7 @@ var map = new ol.Map({
renderer: exampleNS.getRendererFromQueryString(),
overlays: [overlay],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/preload.js b/examples/preload.js
index d9fae1c686..fea83937f0 100644
--- a/examples/preload.js
+++ b/examples/preload.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.BingMaps');
@@ -16,7 +16,7 @@ var map1 = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map1',
- view: new ol.View2D({
+ view: new ol.View({
center: [-4808600, -2620936],
zoom: 8
})
diff --git a/examples/rotation.js b/examples/rotation.js
index e1c87f7260..4106e99359 100644
--- a/examples/rotation.js
+++ b/examples/rotation.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
@@ -12,7 +12,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-25860000, 4130000],
rotation: Math.PI / 6,
zoom: 10
diff --git a/examples/rtree.js b/examples/rtree.js
index 0026fff632..3ef0055404 100644
--- a/examples/rtree.js
+++ b/examples/rtree.js
@@ -2,7 +2,7 @@
// FIXME this example dives into private members and will never compile :)
goog.require('ol.Feature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.extent');
goog.require('ol.geom.Point');
goog.require('ol.geom.Polygon');
@@ -98,7 +98,7 @@ var rtree = new ol.layer.Vector({
var map = new ol.Map({
layers: [vector, rtree],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/scale-line.js b/examples/scale-line.js
index d39392f014..447b4bb842 100644
--- a/examples/scale-line.js
+++ b/examples/scale-line.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.control');
goog.require('ol.control.ScaleLine');
goog.require('ol.dom.Input');
@@ -20,7 +20,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/select-features.js b/examples/select-features.js
index 95a217eccc..5cd47a3729 100644
--- a/examples/select-features.js
+++ b/examples/select-features.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.interaction');
goog.require('ol.interaction.Select');
goog.require('ol.layer.Tile');
@@ -24,7 +24,7 @@ var map = new ol.Map({
interactions: ol.interaction.defaults().extend([select]),
layers: [raster, vector],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/semi-transparent-layer.js b/examples/semi-transparent-layer.js
index b5b4ef5284..6a3fd3c0e9 100644
--- a/examples/semi-transparent-layer.js
+++ b/examples/semi-transparent-layer.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.MapQuest');
@@ -20,7 +20,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([-77.93255, 37.9555], 'EPSG:4326', 'EPSG:3857'),
zoom: 5
})
diff --git a/examples/side-by-side.js b/examples/side-by-side.js
index 3c7e773cd5..5cacf90881 100644
--- a/examples/side-by-side.js
+++ b/examples/side-by-side.js
@@ -1,6 +1,6 @@
goog.require('ol.BrowserFeature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuest');
@@ -13,7 +13,7 @@ var domMap = new ol.Map({
],
renderer: 'dom',
target: 'domMap',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 1
})
diff --git a/examples/simple.js b/examples/simple.js
index c3c620e350..96b91a8b63 100644
--- a/examples/simple.js
+++ b/examples/simple.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
@@ -12,7 +12,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/stamen.js b/examples/stamen.js
index 917b455579..09ef7918f4 100644
--- a/examples/stamen.js
+++ b/examples/stamen.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.Stamen');
@@ -20,7 +20,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform(
[-122.416667, 37.783333], 'EPSG:4326', 'EPSG:3857'),
zoom: 12
diff --git a/examples/static-image.js b/examples/static-image.js
index 19a6c2af1b..6487af2b01 100644
--- a/examples/static-image.js
+++ b/examples/static-image.js
@@ -1,6 +1,6 @@
goog.require('ol.Attribution');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.extent');
goog.require('ol.layer.Image');
goog.require('ol.proj.Projection');
@@ -33,7 +33,7 @@ var map = new ol.Map({
})
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
projection: pixelProjection,
center: ol.extent.getCenter(pixelProjection.getExtent()),
zoom: 2
diff --git a/examples/synthetic-lines.js b/examples/synthetic-lines.js
index e572168860..78754cad5c 100644
--- a/examples/synthetic-lines.js
+++ b/examples/synthetic-lines.js
@@ -1,6 +1,6 @@
goog.require('ol.Feature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.LineString');
goog.require('ol.layer.Vector');
goog.require('ol.source.Vector');
@@ -48,7 +48,7 @@ var vector = new ol.layer.Vector({
})
});
-var view = new ol.View2D({
+var view = new ol.View({
center: [0, 0],
zoom: 0
});
diff --git a/examples/synthetic-points.js b/examples/synthetic-points.js
index 6f423435a5..4381fd355c 100644
--- a/examples/synthetic-points.js
+++ b/examples/synthetic-points.js
@@ -1,6 +1,6 @@
goog.require('ol.Feature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.LineString');
goog.require('ol.geom.Point');
goog.require('ol.layer.Vector');
@@ -53,7 +53,7 @@ var vector = new ol.layer.Vector({
var map = new ol.Map({
layers: [vector],
target: document.getElementById('map'),
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/teleport.js b/examples/teleport.js
index b6fff5a4a2..02216f275c 100644
--- a/examples/teleport.js
+++ b/examples/teleport.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
@@ -11,7 +11,7 @@ var map = new ol.Map({
})
],
renderer: exampleNS.getRendererFromQueryString(),
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/tile-vector.js b/examples/tile-vector.js
index d980e62bbc..eb73c81f75 100644
--- a/examples/tile-vector.js
+++ b/examples/tile-vector.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.format.TopoJSON');
goog.require('ol.layer.Vector');
goog.require('ol.proj');
@@ -77,7 +77,7 @@ var map = new ol.Map({
layers: [waterLayer, roadLayer],
renderer: 'canvas',
target: document.getElementById('map'),
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([-74.0064, 40.7142], 'EPSG:4326', 'EPSG:3857'),
maxZoom: 19,
zoom: 14
diff --git a/examples/tilejson.js b/examples/tilejson.js
index 7c5524718a..2c1416ce72 100644
--- a/examples/tilejson.js
+++ b/examples/tilejson.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.TileJSON');
@@ -15,7 +15,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/examples/tissot.js b/examples/tissot.js
index 3fcb7afebd..9e5f2c4232 100644
--- a/examples/tissot.js
+++ b/examples/tissot.js
@@ -1,6 +1,6 @@
goog.require('ol.Feature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.Polygon');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
@@ -28,7 +28,7 @@ var map = new ol.Map({
],
renderer: 'canvas',
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
projection: 'EPSG:4326',
center: [0, 0],
zoom: 2
diff --git a/examples/topojson.js b/examples/topojson.js
index 8aba4ccc15..827fa28c90 100644
--- a/examples/topojson.js
+++ b/examples/topojson.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.source.TileJSON');
@@ -39,7 +39,7 @@ var vector = new ol.layer.Vector({
var map = new ol.Map({
layers: [raster, vector],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 1
})
diff --git a/examples/vector-labels.js b/examples/vector-labels.js
index f9b402f57a..cd89a31e14 100644
--- a/examples/vector-labels.js
+++ b/examples/vector-labels.js
@@ -1,6 +1,6 @@
goog.require('ol.Feature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.source.GeoJSON');
@@ -188,7 +188,7 @@ var map = new ol.Map({
vectorPoints
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-8161939, 6095025],
zoom: 8
})
diff --git a/examples/vector-layer.js b/examples/vector-layer.js
index 659e0883cf..daf0d3ca75 100644
--- a/examples/vector-layer.js
+++ b/examples/vector-layer.js
@@ -1,6 +1,6 @@
goog.require('ol.FeatureOverlay');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
goog.require('ol.source.GeoJSON');
@@ -53,7 +53,7 @@ var map = new ol.Map({
vectorLayer
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 1
})
diff --git a/examples/vector-osm.js b/examples/vector-osm.js
index 5834ef230e..e5d7e1c3ba 100644
--- a/examples/vector-osm.js
+++ b/examples/vector-osm.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.format.OSMXML');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
@@ -131,7 +131,7 @@ var raster = new ol.layer.Tile({
var map = new ol.Map({
layers: [raster, vector],
target: document.getElementById('map'),
- view: new ol.View2D({
+ view: new ol.View({
center: [739218, 5906096],
maxZoom: 19,
zoom: 17
diff --git a/examples/vector-wfs.js b/examples/vector-wfs.js
index c23c45ff2b..7b9714098e 100644
--- a/examples/vector-wfs.js
+++ b/examples/vector-wfs.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.format.GeoJSON');
goog.require('ol.layer.Tile');
goog.require('ol.layer.Vector');
@@ -52,7 +52,7 @@ var raster = new ol.layer.Tile({
var map = new ol.Map({
layers: [raster, vector],
target: document.getElementById('map'),
- view: new ol.View2D({
+ view: new ol.View({
center: [-8908887.277395891, 5381918.072437216],
maxZoom: 19,
zoom: 12
diff --git a/examples/wms-custom-proj.js b/examples/wms-custom-proj.js
index a6687390bf..39ba860d2b 100644
--- a/examples/wms-custom-proj.js
+++ b/examples/wms-custom-proj.js
@@ -1,6 +1,6 @@
goog.require('ol.Attribution');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.control');
goog.require('ol.control.ScaleLine');
goog.require('ol.layer.Tile');
@@ -59,7 +59,7 @@ var map = new ol.Map({
layers: layers,
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
projection: projection,
center: [660000, 190000],
extent: extent,
diff --git a/examples/wms-image-custom-proj.js b/examples/wms-image-custom-proj.js
index 9f5758a792..d7f0b45f0b 100644
--- a/examples/wms-image-custom-proj.js
+++ b/examples/wms-image-custom-proj.js
@@ -1,6 +1,6 @@
goog.require('ol.Attribution');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Image');
goog.require('ol.proj');
goog.require('ol.source.ImageWMS');
@@ -52,7 +52,7 @@ var map = new ol.Map({
layers: layers,
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
projection: projection,
center: [660000, 190000],
extent: extent,
diff --git a/examples/wms-image.js b/examples/wms-image.js
index 345ac7d025..fbc573ab8c 100644
--- a/examples/wms-image.js
+++ b/examples/wms-image.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Image');
goog.require('ol.layer.Tile');
goog.require('ol.source.ImageWMS');
@@ -22,7 +22,7 @@ var layers = [
var map = new ol.Map({
layers: layers,
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-10997148, 4569099],
zoom: 4
})
diff --git a/examples/wms-no-proj.js b/examples/wms-no-proj.js
index 35096af958..4bde5c64f3 100644
--- a/examples/wms-no-proj.js
+++ b/examples/wms-no-proj.js
@@ -1,6 +1,6 @@
goog.require('ol.Attribution');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Image');
goog.require('ol.layer.Tile');
goog.require('ol.proj.Projection');
@@ -53,7 +53,7 @@ var map = new ol.Map({
layers: layers,
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [660000, 190000],
projection: projection,
zoom: 9
diff --git a/examples/wms-tiled.js b/examples/wms-tiled.js
index d213263efe..86f5503f62 100644
--- a/examples/wms-tiled.js
+++ b/examples/wms-tiled.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuest');
goog.require('ol.source.TileWMS');
@@ -21,7 +21,7 @@ var layers = [
var map = new ol.Map({
layers: layers,
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-10997148, 4569099],
zoom: 4
})
diff --git a/examples/wmts-hidpi.js b/examples/wmts-hidpi.js
index a89a1fbe5a..c0633601e1 100644
--- a/examples/wmts-hidpi.js
+++ b/examples/wmts-hidpi.js
@@ -1,6 +1,6 @@
goog.require('ol.BrowserFeature');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.WMTS');
goog.require('ol.tilegrid.WMTS');
@@ -68,7 +68,7 @@ var map = new ol.Map({
})
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [1823849, 6143760],
zoom: 11
})
diff --git a/examples/wmts.js b/examples/wmts.js
index f5b50304e0..4b2de5c726 100644
--- a/examples/wmts.js
+++ b/examples/wmts.js
@@ -1,6 +1,6 @@
goog.require('ol.Attribution');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.extent');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
@@ -53,7 +53,7 @@ var map = new ol.Map({
})
],
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
center: [-11158582, 4813697],
zoom: 4
})
diff --git a/examples/xyz-esri.js b/examples/xyz-esri.js
index 8d24ada607..78bdeb1ec4 100644
--- a/examples/xyz-esri.js
+++ b/examples/xyz-esri.js
@@ -1,6 +1,6 @@
goog.require('ol.Attribution');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.source.XYZ');
@@ -22,7 +22,7 @@ var map = new ol.Map({
})
})
],
- view: new ol.View2D({
+ view: new ol.View({
center: ol.proj.transform([-121.1, 47.5], 'EPSG:4326', 'EPSG:3857'),
zoom: 7
})
diff --git a/examples/xyz.js b/examples/xyz.js
index 11b0f484f2..04ed95d1ef 100644
--- a/examples/xyz.js
+++ b/examples/xyz.js
@@ -1,6 +1,6 @@
goog.require('ol.Attribution');
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.OSM');
goog.require('ol.source.XYZ');
@@ -33,7 +33,7 @@ var map = new ol.Map({
})
})
],
- view: new ol.View2D({
+ view: new ol.View({
center: [-472202, 7530279],
zoom: 12
})
diff --git a/examples/zoom-constrained.js b/examples/zoom-constrained.js
index a8ad02ddcc..c76578a17f 100644
--- a/examples/zoom-constrained.js
+++ b/examples/zoom-constrained.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.source.BingMaps');
@@ -14,7 +14,7 @@ var map = new ol.Map({
})
})
],
- view: new ol.View2D({
+ view: new ol.View({
center: [-13553864, 5918250],
zoom: 11,
minZoom: 9,
diff --git a/examples/zoomify.js b/examples/zoomify.js
index c4f541a04e..ef48e73b1b 100644
--- a/examples/zoomify.js
+++ b/examples/zoomify.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.layer.Tile');
goog.require('ol.proj');
goog.require('ol.proj.Projection');
@@ -42,7 +42,7 @@ var map = new ol.Map({
],
renderer: exampleNS.getRendererFromQueryString(),
target: 'map',
- view: new ol.View2D({
+ view: new ol.View({
projection: proj,
center: imgCenter,
zoom: 0
diff --git a/examples/zoomslider.js b/examples/zoomslider.js
index 5066a52c63..97cd8385e7 100644
--- a/examples/zoomslider.js
+++ b/examples/zoomslider.js
@@ -1,5 +1,5 @@
goog.require('ol.Map');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.control.ZoomSlider');
goog.require('ol.layer.Tile');
goog.require('ol.source.MapQuest');
@@ -21,7 +21,7 @@ var createMap = function(divId) {
map = new ol.Map({
layers: [layer],
target: divId,
- view: new ol.View2D({
+ view: new ol.View({
center: [0, 0],
zoom: 2
})
diff --git a/externs/olx.js b/externs/olx.js
index db8ea75762..cc1d32217f 100644
--- a/externs/olx.js
+++ b/externs/olx.js
@@ -110,7 +110,7 @@ olx.GeolocationOptions.prototype.projection;
* overlays: (ol.Collection|Array. |undefined),
* renderer: (ol.RendererType|Array.|string|undefined),
* target: (Element|string|undefined),
- * view: (ol.IView|undefined)}}
+ * view: (ol.View|undefined)}}
* @todo api
*/
olx.MapOptions;
@@ -201,10 +201,9 @@ olx.MapOptions.prototype.target;
/**
- * The map's view. Currently {@link ol.View2D} is the only available view.
- * No layer sources will be fetched unless this is specified at construction
- * time or through {@link ol.Map#setView}.
- * @type {ol.IView|undefined}
+ * The map's view. No layer sources will be fetched unless this is specified at
+ * construction time or through {@link ol.Map#setView}.
+ * @type {ol.View|undefined}
*/
olx.MapOptions.prototype.view;
@@ -371,7 +370,7 @@ olx.ProjectionOptions.prototype.global;
* zoomFactor: (number|undefined)}}
* @todo api
*/
-olx.View2DOptions;
+olx.ViewOptions;
/**
@@ -380,7 +379,7 @@ olx.View2DOptions;
* sources will not be fetched if this is not set.
* @type {ol.Coordinate|undefined}
*/
-olx.View2DOptions.prototype.center;
+olx.ViewOptions.prototype.center;
/**
@@ -390,14 +389,14 @@ olx.View2DOptions.prototype.center;
* 270 degrees. The default is `true`.
* @type {boolean|number|undefined}
*/
-olx.View2DOptions.prototype.constrainRotation;
+olx.ViewOptions.prototype.constrainRotation;
/**
* Enable rotation. Default is `true`.
* @type {boolean|undefined}
*/
-olx.View2DOptions.prototype.enableRotation;
+olx.ViewOptions.prototype.enableRotation;
/**
@@ -405,7 +404,7 @@ olx.View2DOptions.prototype.enableRotation;
* outside this extent. Default is `undefined`.
* @type {ol.Extent|undefined}
*/
-olx.View2DOptions.prototype.extent;
+olx.ViewOptions.prototype.extent;
/**
@@ -417,7 +416,7 @@ olx.View2DOptions.prototype.extent;
* 156543.03392804097`.
* @type {number|undefined}
*/
-olx.View2DOptions.prototype.maxResolution;
+olx.ViewOptions.prototype.maxResolution;
/**
@@ -429,7 +428,7 @@ olx.View2DOptions.prototype.maxResolution;
* 0.0005831682455839253`.
* @type {number|undefined}
*/
-olx.View2DOptions.prototype.minResolution;
+olx.ViewOptions.prototype.minResolution;
/**
@@ -439,7 +438,7 @@ olx.View2DOptions.prototype.minResolution;
* precedence over `maxZoom`.
* @type {number|undefined}
*/
-olx.View2DOptions.prototype.maxZoom;
+olx.ViewOptions.prototype.maxZoom;
/**
@@ -449,14 +448,14 @@ olx.View2DOptions.prototype.maxZoom;
* precedence over `minZoom`.
* @type {number|undefined}
*/
-olx.View2DOptions.prototype.minZoom;
+olx.ViewOptions.prototype.minZoom;
/**
* The projection. Default is `EPSG:3857` (Spherical Mercator).
* @type {ol.proj.ProjectionLike}
*/
-olx.View2DOptions.prototype.projection;
+olx.ViewOptions.prototype.projection;
/**
@@ -466,7 +465,7 @@ olx.View2DOptions.prototype.projection;
* neither this nor `zoom` are defined.
* @type {number|undefined}
*/
-olx.View2DOptions.prototype.resolution;
+olx.ViewOptions.prototype.resolution;
/**
@@ -475,7 +474,7 @@ olx.View2DOptions.prototype.resolution;
* options are ignored.
* @type {Array.|undefined}
*/
-olx.View2DOptions.prototype.resolutions;
+olx.ViewOptions.prototype.resolutions;
/**
@@ -483,23 +482,23 @@ olx.View2DOptions.prototype.resolutions;
* Default is `0`.
* @type {number|undefined}
*/
-olx.View2DOptions.prototype.rotation;
+olx.ViewOptions.prototype.rotation;
/**
* Only used if `resolution` is not defined. Zoom level used to calculate the
* initial resolution for the view. The initial resolution is determined using
- * the `ol.View2D#constrainResolution` method.
+ * the `ol.View#constrainResolution` method.
* @type {number|undefined}
*/
-olx.View2DOptions.prototype.zoom;
+olx.ViewOptions.prototype.zoom;
/**
* The zoom factor used to determine the resolution constraint. Default is `2`.
* @type {number|undefined}
*/
-olx.View2DOptions.prototype.zoomFactor;
+olx.ViewOptions.prototype.zoomFactor;
/**
@@ -5037,7 +5036,7 @@ olx.tilegrid.ZoomifyOptions.prototype.resolutions;
* minResolution: (number|undefined)}}
* @todo api
*/
-olx.View2D.fitGeometryOptions;
+olx.View.fitGeometryOptions;
/**
@@ -5045,28 +5044,28 @@ olx.View2D.fitGeometryOptions;
* top, right, bottom and left padding. Default is `[0, 0, 0, 0]`.
* @type {!Array.}
*/
-olx.View2D.fitGeometryOptions.prototype.padding;
+olx.View.fitGeometryOptions.prototype.padding;
/**
* Constrain the resolution. Default is `true`.
* @type {boolean|undefined}
*/
-olx.View2D.fitGeometryOptions.prototype.constrainResolution;
+olx.View.fitGeometryOptions.prototype.constrainResolution;
/**
* Get the nearest extent. Default is `false`.
* @type {boolean|undefined}
*/
-olx.View2D.fitGeometryOptions.prototype.nearest;
+olx.View.fitGeometryOptions.prototype.nearest;
/**
* Minimum resolution that we zoom to. Default is `0`.
* @type {number|undefined}
*/
-olx.View2D.fitGeometryOptions.prototype.minResolution;
+olx.View.fitGeometryOptions.prototype.minResolution;
/* typedefs for object literals exposed by the library */
@@ -5090,7 +5089,7 @@ olx.View2D.fitGeometryOptions.prototype.minResolution;
* tileQueue: ol.TileQueue,
* time: number,
* usedTiles: Object.>,
- * view2DState: olx.View2DState,
+ * viewState: olx.ViewState,
* viewHints: Array.,
* wantedTiles: Object.>}}
* @todo api
@@ -5106,8 +5105,8 @@ olx.FrameState.prototype.pixelRatio;
olx.FrameState.prototype.time;
-/** @type {olx.View2DState} */
-olx.FrameState.prototype.view2DState;
+/** @type {olx.ViewState} */
+olx.FrameState.prototype.viewState;
/**
@@ -5117,16 +5116,16 @@ olx.FrameState.prototype.view2DState;
* rotation: number}}
* @todo api
*/
-olx.View2DState;
+olx.ViewState;
/** @type {ol.Coordinate} */
-olx.View2DState.prototype.center;
+olx.ViewState.prototype.center;
/** @type {number} */
-olx.View2DState.prototype.resolution;
+olx.ViewState.prototype.resolution;
/** @type {number} */
-olx.View2DState.prototype.rotation;
+olx.ViewState.prototype.rotation;
diff --git a/src/ol/animation.js b/src/ol/animation.js
index 41fab3e6b0..35fc212fdc 100644
--- a/src/ol/animation.js
+++ b/src/ol/animation.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.animation');
goog.require('ol.PreRenderFunction');
@@ -31,9 +29,9 @@ ol.animation.bounce = function(options) {
return true;
} else if (frameState.time < start + duration) {
var delta = easing((frameState.time - start) / duration);
- var deltaResolution = resolution - frameState.view2DState.resolution;
+ var deltaResolution = resolution - frameState.viewState.resolution;
frameState.animate = true;
- frameState.view2DState.resolution += delta * deltaResolution;
+ frameState.viewState.resolution += delta * deltaResolution;
frameState.viewHints[ol.ViewHint.ANIMATING] += 1;
return true;
} else {
@@ -68,11 +66,11 @@ ol.animation.pan = function(options) {
return true;
} else if (frameState.time < start + duration) {
var delta = 1 - easing((frameState.time - start) / duration);
- var deltaX = sourceX - frameState.view2DState.center[0];
- var deltaY = sourceY - frameState.view2DState.center[1];
+ var deltaX = sourceX - frameState.viewState.center[0];
+ var deltaY = sourceY - frameState.viewState.center[1];
frameState.animate = true;
- frameState.view2DState.center[0] += delta * deltaX;
- frameState.view2DState.center[1] += delta * deltaY;
+ frameState.viewState.center[0] += delta * deltaX;
+ frameState.viewState.center[1] += delta * deltaY;
frameState.viewHints[ol.ViewHint.ANIMATING] += 1;
return true;
} else {
@@ -109,11 +107,11 @@ ol.animation.rotate = function(options) {
} else if (frameState.time < start + duration) {
var delta = 1 - easing((frameState.time - start) / duration);
var deltaRotation =
- (sourceRotation - frameState.view2DState.rotation) * delta;
+ (sourceRotation - frameState.viewState.rotation) * delta;
frameState.animate = true;
- frameState.view2DState.rotation += deltaRotation;
+ frameState.viewState.rotation += deltaRotation;
if (!goog.isNull(anchor)) {
- var center = frameState.view2DState.center;
+ var center = frameState.viewState.center;
ol.coordinate.sub(center, anchor);
ol.coordinate.rotate(center, deltaRotation);
ol.coordinate.add(center, anchor);
@@ -151,9 +149,9 @@ ol.animation.zoom = function(options) {
} else if (frameState.time < start + duration) {
var delta = 1 - easing((frameState.time - start) / duration);
var deltaResolution =
- sourceResolution - frameState.view2DState.resolution;
+ sourceResolution - frameState.viewState.resolution;
frameState.animate = true;
- frameState.view2DState.resolution += delta * deltaResolution;
+ frameState.viewState.resolution += delta * deltaResolution;
frameState.viewHints[ol.ViewHint.ANIMATING] += 1;
return true;
} else {
diff --git a/src/ol/control/mousepositioncontrol.js b/src/ol/control/mousepositioncontrol.js
index 2fea773865..3f0bf1c7b9 100644
--- a/src/ol/control/mousepositioncontrol.js
+++ b/src/ol/control/mousepositioncontrol.js
@@ -1,5 +1,4 @@
// FIXME should listen on appropriate pane, once it is defined
-// FIXME works for View2D only
goog.provide('ol.control.MousePosition');
@@ -110,8 +109,8 @@ ol.control.MousePosition.prototype.handleMapPostrender = function(mapEvent) {
if (goog.isNull(frameState)) {
this.mapProjection_ = null;
} else {
- if (this.mapProjection_ != frameState.view2DState.projection) {
- this.mapProjection_ = frameState.view2DState.projection;
+ if (this.mapProjection_ != frameState.viewState.projection) {
+ this.mapProjection_ = frameState.viewState.projection;
this.transform_ = null;
}
}
diff --git a/src/ol/control/rotatecontrol.js b/src/ol/control/rotatecontrol.js
index f739293a96..53b378c682 100644
--- a/src/ol/control/rotatecontrol.js
+++ b/src/ol/control/rotatecontrol.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.control.Rotate');
goog.require('goog.asserts');
@@ -7,7 +5,6 @@ goog.require('goog.dom');
goog.require('goog.dom.TagName');
goog.require('goog.events');
goog.require('goog.events.EventType');
-goog.require('ol.View2D');
goog.require('ol.animation');
goog.require('ol.control.Control');
goog.require('ol.css');
@@ -118,12 +115,9 @@ ol.control.Rotate.prototype.handlePointerUp_ = function(pointerEvent) {
*/
ol.control.Rotate.prototype.resetNorth_ = function() {
var map = this.getMap();
- // FIXME works for View2D only
var view = map.getView();
goog.asserts.assert(goog.isDef(view));
- var view2D = view.getView2D();
- goog.asserts.assertInstanceof(view2D, ol.View2D);
- var currentRotation = view2D.getRotation();
+ var currentRotation = view.getRotation();
while (currentRotation < -Math.PI) {
currentRotation += 2 * Math.PI;
}
@@ -138,7 +132,7 @@ ol.control.Rotate.prototype.resetNorth_ = function() {
easing: ol.easing.easeOut
}));
}
- view2D.setRotation(0);
+ view.setRotation(0);
}
};
@@ -151,7 +145,7 @@ ol.control.Rotate.prototype.handleMapPostrender = function(mapEvent) {
if (goog.isNull(frameState)) {
return;
}
- var rotation = frameState.view2DState.rotation;
+ var rotation = frameState.viewState.rotation;
var transform = 'rotate(' + rotation * 360 / (Math.PI * 2) + 'deg)';
if (this.autoHide_) {
this.element.style.opacity = (rotation === 0) ? 0 : 1;
diff --git a/src/ol/control/scalelinecontrol.js b/src/ol/control/scalelinecontrol.js
index b1189aa834..d1af80a7c6 100644
--- a/src/ol/control/scalelinecontrol.js
+++ b/src/ol/control/scalelinecontrol.js
@@ -77,9 +77,9 @@ ol.control.ScaleLine = function(opt_options) {
/**
* @private
- * @type {?olx.View2DState}
+ * @type {?olx.ViewState}
*/
- this.view2DState_ = null;
+ this.viewState_ = null;
/**
* @private
@@ -156,9 +156,9 @@ goog.exportProperty(
ol.control.ScaleLine.prototype.handleMapPostrender = function(mapEvent) {
var frameState = mapEvent.frameState;
if (goog.isNull(frameState)) {
- this.view2DState_ = null;
+ this.viewState_ = null;
} else {
- this.view2DState_ = frameState.view2DState;
+ this.viewState_ = frameState.viewState;
}
this.updateElement_();
};
@@ -190,9 +190,9 @@ goog.exportProperty(
* @private
*/
ol.control.ScaleLine.prototype.updateElement_ = function() {
- var view2DState = this.view2DState_;
+ var viewState = this.viewState_;
- if (goog.isNull(view2DState)) {
+ if (goog.isNull(viewState)) {
if (this.renderedVisible_) {
goog.style.setElementShown(this.element_, false);
this.renderedVisible_ = false;
@@ -200,10 +200,10 @@ ol.control.ScaleLine.prototype.updateElement_ = function() {
return;
}
- var center = view2DState.center;
- var projection = view2DState.projection;
+ var center = viewState.center;
+ var projection = viewState.projection;
var pointResolution =
- projection.getPointResolution(view2DState.resolution, center);
+ projection.getPointResolution(viewState.resolution, center);
var projectionUnits = projection.getUnits();
var cosLatitude;
diff --git a/src/ol/control/zoomcontrol.js b/src/ol/control/zoomcontrol.js
index 4e6ae80364..fcc90a5acb 100644
--- a/src/ol/control/zoomcontrol.js
+++ b/src/ol/control/zoomcontrol.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.control.Zoom');
goog.require('goog.asserts');
@@ -7,7 +5,6 @@ goog.require('goog.dom');
goog.require('goog.dom.TagName');
goog.require('goog.events');
goog.require('goog.events.EventType');
-goog.require('ol.View2D');
goog.require('ol.animation');
goog.require('ol.control.Control');
goog.require('ol.css');
@@ -143,12 +140,8 @@ ol.control.Zoom.prototype.handlePointerUp_ = function(delta, pointerEvent) {
*/
ol.control.Zoom.prototype.zoomByDelta_ = function(delta) {
var map = this.getMap();
- // FIXME works for View2D only
var view = map.getView();
- goog.asserts.assert(goog.isDef(view));
- var view2D = view.getView2D();
- goog.asserts.assertInstanceof(view2D, ol.View2D);
- var currentResolution = view2D.getResolution();
+ var currentResolution = view.getResolution();
if (goog.isDef(currentResolution)) {
if (this.duration_ > 0) {
map.beforeRender(ol.animation.zoom({
@@ -157,7 +150,7 @@ ol.control.Zoom.prototype.zoomByDelta_ = function(delta) {
easing: ol.easing.easeOut
}));
}
- var newResolution = view2D.constrainResolution(currentResolution, delta);
- view2D.setResolution(newResolution);
+ var newResolution = view.constrainResolution(currentResolution, delta);
+ view.setResolution(newResolution);
}
};
diff --git a/src/ol/control/zoomslidercontrol.js b/src/ol/control/zoomslidercontrol.js
index 76a41113bf..9979568a29 100644
--- a/src/ol/control/zoomslidercontrol.js
+++ b/src/ol/control/zoomslidercontrol.js
@@ -1,4 +1,3 @@
-// FIXME works for View2D only
// FIXME should possibly show tooltip when dragging?
goog.provide('ol.control.ZoomSlider');
@@ -159,11 +158,11 @@ ol.control.ZoomSlider.prototype.handleMapPostrender = function(mapEvent) {
return;
}
goog.asserts.assert(
- goog.isDefAndNotNull(mapEvent.frameState.view2DState));
+ goog.isDefAndNotNull(mapEvent.frameState.viewState));
if (!this.sliderInitialized_) {
this.initSlider_();
}
- var res = mapEvent.frameState.view2DState.resolution;
+ var res = mapEvent.frameState.viewState.resolution;
if (res !== this.currentResolution_) {
this.currentResolution_ = res;
this.positionThumbForResolution_(res);
@@ -177,7 +176,7 @@ ol.control.ZoomSlider.prototype.handleMapPostrender = function(mapEvent) {
*/
ol.control.ZoomSlider.prototype.handleContainerClick_ = function(browserEvent) {
var map = this.getMap();
- var view = map.getView().getView2D();
+ var view = map.getView();
var resolution;
var amountDragged = this.amountDragged_(browserEvent.offsetX,
browserEvent.offsetY);
@@ -246,7 +245,7 @@ ol.control.ZoomSlider.prototype.amountDragged_ = function(x, y) {
ol.control.ZoomSlider.prototype.resolutionForAmount_ = function(amount) {
// FIXME do we really need this affine transform?
amount = (goog.math.clamp(amount, 0, 1) - 1) * -1;
- var fn = this.getMap().getView().getView2D().getResolutionForValueFunction();
+ var fn = this.getMap().getView().getResolutionForValueFunction();
return fn(amount);
};
@@ -260,7 +259,7 @@ ol.control.ZoomSlider.prototype.resolutionForAmount_ = function(amount) {
* @private
*/
ol.control.ZoomSlider.prototype.amountForResolution_ = function(res) {
- var fn = this.getMap().getView().getView2D().getValueForResolutionFunction();
+ var fn = this.getMap().getView().getValueForResolutionFunction();
var value = fn(res);
// FIXME do we really need this affine transform?
return (value - 1) * -1;
@@ -277,7 +276,7 @@ ol.control.ZoomSlider.prototype.amountForResolution_ = function(res) {
*/
ol.control.ZoomSlider.prototype.handleSliderChange_ = function(e) {
var map = this.getMap();
- var view = map.getView().getView2D();
+ var view = map.getView();
var resolution;
if (e.type === goog.fx.Dragger.EventType.DRAG) {
var amountDragged = this.amountDragged_(e.left, e.top);
diff --git a/src/ol/control/zoomtoextentcontrol.js b/src/ol/control/zoomtoextentcontrol.js
index 8c992e985b..433224880a 100644
--- a/src/ol/control/zoomtoextentcontrol.js
+++ b/src/ol/control/zoomtoextentcontrol.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.control.ZoomToExtent');
goog.require('goog.asserts');
@@ -99,9 +97,9 @@ ol.control.ZoomToExtent.prototype.handlePointerUp_ = function(pointerEvent) {
ol.control.ZoomToExtent.prototype.handleZoomToExtent_ = function() {
var map = this.getMap();
var view = map.getView();
- goog.asserts.assert(goog.isDef(view));
- var view2D = view.getView2D();
var extent = goog.isNull(this.extent_) ?
- view2D.getProjection().getExtent() : this.extent_;
- view2D.fitExtent(extent, map.getSize());
+ view.getProjection().getExtent() : this.extent_;
+ var size = map.getSize();
+ goog.asserts.assert(goog.isDef(size));
+ view.fitExtent(extent, size);
};
diff --git a/src/ol/extent.js b/src/ol/extent.js
index 2e666cf201..57b6a86ae2 100644
--- a/src/ol/extent.js
+++ b/src/ol/extent.js
@@ -474,7 +474,7 @@ ol.extent.getEnlargedArea = function(extent1, extent2) {
* @param {ol.Extent=} opt_extent Destination extent.
* @return {ol.Extent} Extent.
*/
-ol.extent.getForView2DAndSize =
+ol.extent.getForViewAndSize =
function(center, resolution, rotation, size, opt_extent) {
var dx = resolution * size[0] / 2;
var dy = resolution * size[1] / 2;
diff --git a/src/ol/featureoverlay.js b/src/ol/featureoverlay.js
index b9db01bb52..f0f7e4a76e 100644
--- a/src/ol/featureoverlay.js
+++ b/src/ol/featureoverlay.js
@@ -176,7 +176,7 @@ ol.FeatureOverlay.prototype.handleMapPostCompose_ = function(event) {
goog.asserts.assert(goog.isDef(replayGroup));
var frameState = event.frameState;
var pixelRatio = frameState.pixelRatio;
- var resolution = frameState.view2DState.resolution;
+ var resolution = frameState.viewState.resolution;
var i, ii, styles;
this.features_.forEach(function(feature) {
styles = styleFunction(feature, resolution);
diff --git a/src/ol/framestate.js b/src/ol/framestate.js
index 5692caaa38..488a02f397 100644
--- a/src/ol/framestate.js
+++ b/src/ol/framestate.js
@@ -1,4 +1,3 @@
-// FIXME add view3DState
// FIXME factor out common code between usedTiles and wantedTiles
goog.provide('ol.PostRenderFunction');
diff --git a/src/ol/interaction/doubleclickzoominteraction.js b/src/ol/interaction/doubleclickzoominteraction.js
index 57d94a62c4..71873eb81f 100644
--- a/src/ol/interaction/doubleclickzoominteraction.js
+++ b/src/ol/interaction/doubleclickzoominteraction.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.interaction.DoubleClickZoom');
goog.require('goog.asserts');
@@ -51,8 +49,8 @@ ol.interaction.DoubleClickZoom.prototype.handleMapBrowserEvent =
var map = mapBrowserEvent.map;
var anchor = mapBrowserEvent.coordinate;
var delta = browserEvent.shiftKey ? -this.delta_ : this.delta_;
- // FIXME works for View2D only
- var view = map.getView().getView2D();
+ var view = map.getView();
+ goog.asserts.assert(goog.isDef(view));
ol.interaction.Interaction.zoomByDelta(
map, view, delta, anchor, this.duration_);
mapBrowserEvent.preventDefault();
diff --git a/src/ol/interaction/draganddropinteraction.js b/src/ol/interaction/draganddropinteraction.js
index 9dc0d5faf1..5b7c99768c 100644
--- a/src/ol/interaction/draganddropinteraction.js
+++ b/src/ol/interaction/draganddropinteraction.js
@@ -101,7 +101,7 @@ ol.interaction.DragAndDrop.prototype.handleResult_ = function(file, result) {
if (goog.isNull(projection)) {
var view = map.getView();
goog.asserts.assert(goog.isDef(view));
- projection = view.getView2D().getProjection();
+ projection = view.getProjection();
goog.asserts.assert(goog.isDef(projection));
}
var formatConstructors = this.formatConstructors_;
diff --git a/src/ol/interaction/dragboxinteraction.js b/src/ol/interaction/dragboxinteraction.js
index cea9b873e4..606a7392f7 100644
--- a/src/ol/interaction/dragboxinteraction.js
+++ b/src/ol/interaction/dragboxinteraction.js
@@ -1,6 +1,4 @@
// FIXME draw drag box
-// FIXME works for View2D only
-
goog.provide('ol.DragBoxEvent');
goog.provide('ol.interaction.DragBox');
diff --git a/src/ol/interaction/dragpaninteraction.js b/src/ol/interaction/dragpaninteraction.js
index 962089f8be..c1fac6f946 100644
--- a/src/ol/interaction/dragpaninteraction.js
+++ b/src/ol/interaction/dragpaninteraction.js
@@ -1,11 +1,9 @@
-// FIXME works for View2D only
goog.provide('ol.interaction.DragPan');
goog.require('goog.asserts');
goog.require('ol.Kinetic');
goog.require('ol.Pixel');
goog.require('ol.PreRenderFunction');
-goog.require('ol.View2D');
goog.require('ol.ViewHint');
goog.require('ol.coordinate');
goog.require('ol.events.condition');
@@ -76,16 +74,15 @@ ol.interaction.DragPan.prototype.handlePointerDrag = function(mapBrowserEvent) {
var deltaX = this.lastCentroid[0] - centroid[0];
var deltaY = centroid[1] - this.lastCentroid[1];
var map = mapBrowserEvent.map;
- var view2D = map.getView().getView2D();
- goog.asserts.assertInstanceof(view2D, ol.View2D);
- var view2DState = view2D.getView2DState();
+ var view = map.getView();
+ var viewState = view.getState();
var center = [deltaX, deltaY];
- ol.coordinate.scale(center, view2DState.resolution);
- ol.coordinate.rotate(center, view2DState.rotation);
- ol.coordinate.add(center, view2DState.center);
- center = view2D.constrainCenter(center);
+ ol.coordinate.scale(center, viewState.resolution);
+ ol.coordinate.rotate(center, viewState.rotation);
+ ol.coordinate.add(center, viewState.center);
+ center = view.constrainCenter(center);
map.render();
- view2D.setCenter(center);
+ view.setCenter(center);
}
this.lastCentroid = centroid;
};
@@ -97,13 +94,12 @@ ol.interaction.DragPan.prototype.handlePointerDrag = function(mapBrowserEvent) {
ol.interaction.DragPan.prototype.handlePointerUp =
function(mapBrowserEvent) {
var map = mapBrowserEvent.map;
- var view2D = map.getView().getView2D();
- goog.asserts.assertInstanceof(view2D, ol.View2D);
+ var view = map.getView();
if (this.targetPointers.length === 0) {
if (!this.noKinetic_ && this.kinetic_ && this.kinetic_.end()) {
var distance = this.kinetic_.getDistance();
var angle = this.kinetic_.getAngle();
- var center = view2D.getCenter();
+ var center = view.getCenter();
goog.asserts.assert(goog.isDef(center));
this.kineticPreRenderFn_ = this.kinetic_.pan(center);
map.beforeRender(this.kineticPreRenderFn_);
@@ -112,10 +108,10 @@ ol.interaction.DragPan.prototype.handlePointerUp =
centerpx[0] - distance * Math.cos(angle),
centerpx[1] - distance * Math.sin(angle)
]);
- dest = view2D.constrainCenter(dest);
- view2D.setCenter(dest);
+ dest = view.constrainCenter(dest);
+ view.setCenter(dest);
}
- view2D.setHint(ol.ViewHint.INTERACTING, -1);
+ view.setHint(ol.ViewHint.INTERACTING, -1);
map.render();
return false;
} else {
@@ -132,16 +128,15 @@ ol.interaction.DragPan.prototype.handlePointerDown =
function(mapBrowserEvent) {
if (this.targetPointers.length > 0 && this.condition_(mapBrowserEvent)) {
var map = mapBrowserEvent.map;
- var view2D = map.getView().getView2D();
- goog.asserts.assertInstanceof(view2D, ol.View2D);
+ var view = map.getView();
this.lastCentroid = null;
if (!this.handlingDownUpSequence) {
- view2D.setHint(ol.ViewHint.INTERACTING, 1);
+ view.setHint(ol.ViewHint.INTERACTING, 1);
}
map.render();
if (!goog.isNull(this.kineticPreRenderFn_) &&
map.removePreRenderFunction(this.kineticPreRenderFn_)) {
- view2D.setCenter(mapBrowserEvent.frameState.view2DState.center);
+ view.setCenter(mapBrowserEvent.frameState.viewState.center);
this.kineticPreRenderFn_ = null;
}
if (this.kinetic_) {
diff --git a/src/ol/interaction/dragrotateandzoominteraction.js b/src/ol/interaction/dragrotateandzoominteraction.js
index 1ab91ee565..b63dfcd249 100644
--- a/src/ol/interaction/dragrotateandzoominteraction.js
+++ b/src/ol/interaction/dragrotateandzoominteraction.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.interaction.DragRotateAndZoom');
goog.require('goog.asserts');
@@ -82,18 +80,17 @@ ol.interaction.DragRotateAndZoom.prototype.handlePointerDrag =
size[1] / 2 - offset[1]);
var theta = Math.atan2(delta.y, delta.x);
var magnitude = delta.magnitude();
- // FIXME works for View2D only
- var view = map.getView().getView2D();
- var view2DState = view.getView2DState();
+ var view = map.getView();
+ var viewState = view.getState();
map.render();
if (goog.isDef(this.lastAngle_)) {
var angleDelta = theta - this.lastAngle_;
ol.interaction.Interaction.rotateWithoutConstraints(
- map, view, view2DState.rotation - angleDelta);
+ map, view, viewState.rotation - angleDelta);
}
this.lastAngle_ = theta;
if (goog.isDef(this.lastMagnitude_)) {
- var resolution = this.lastMagnitude_ * (view2DState.resolution / magnitude);
+ var resolution = this.lastMagnitude_ * (viewState.resolution / magnitude);
ol.interaction.Interaction.zoomWithoutConstraints(map, view, resolution);
}
if (goog.isDef(this.lastMagnitude_)) {
@@ -113,14 +110,12 @@ ol.interaction.DragRotateAndZoom.prototype.handlePointerUp =
}
var map = mapBrowserEvent.map;
- // FIXME works for View2D only
var view = map.getView();
view.setHint(ol.ViewHint.INTERACTING, -1);
- var view2D = view.getView2D();
- var view2DState = view2D.getView2DState();
+ var viewState = view.getState();
var direction = this.lastScaleDelta_ - 1;
- ol.interaction.Interaction.rotate(map, view2D, view2DState.rotation);
- ol.interaction.Interaction.zoom(map, view2D, view2DState.resolution,
+ ol.interaction.Interaction.rotate(map, view, viewState.rotation);
+ ol.interaction.Interaction.zoom(map, view, viewState.resolution,
undefined, ol.DRAGROTATEANDZOOM_ANIMATION_DURATION,
direction);
this.lastScaleDelta_ = 0;
diff --git a/src/ol/interaction/dragrotateinteraction.js b/src/ol/interaction/dragrotateinteraction.js
index e04f84bba7..357a7f4fbe 100644
--- a/src/ol/interaction/dragrotateinteraction.js
+++ b/src/ol/interaction/dragrotateinteraction.js
@@ -62,12 +62,11 @@ ol.interaction.DragRotate.prototype.handlePointerDrag =
Math.atan2(size[1] / 2 - offset[1], offset[0] - size[0] / 2);
if (goog.isDef(this.lastAngle_)) {
var delta = theta - this.lastAngle_;
- // FIXME works for View2D only
- var view = map.getView().getView2D();
- var view2DState = view.getView2DState();
+ var view = map.getView();
+ var viewState = view.getState();
map.render();
ol.interaction.Interaction.rotateWithoutConstraints(
- map, view, view2DState.rotation - delta);
+ map, view, viewState.rotation - delta);
}
this.lastAngle_ = theta;
};
@@ -83,12 +82,10 @@ ol.interaction.DragRotate.prototype.handlePointerUp =
}
var map = mapBrowserEvent.map;
- // FIXME works for View2D only
var view = map.getView();
view.setHint(ol.ViewHint.INTERACTING, -1);
- var view2D = view.getView2D();
- var view2DState = view2D.getView2DState();
- ol.interaction.Interaction.rotate(map, view2D, view2DState.rotation,
+ var viewState = view.getState();
+ ol.interaction.Interaction.rotate(map, view, viewState.rotation,
undefined, ol.DRAGROTATE_ANIMATION_DURATION);
return false;
};
diff --git a/src/ol/interaction/dragzoominteraction.js b/src/ol/interaction/dragzoominteraction.js
index 4398d4f233..5036c3b3bf 100644
--- a/src/ol/interaction/dragzoominteraction.js
+++ b/src/ol/interaction/dragzoominteraction.js
@@ -52,12 +52,14 @@ goog.inherits(ol.interaction.DragZoom, ol.interaction.DragBox);
* @inheritDoc
*/
ol.interaction.DragZoom.prototype.onBoxEnd = function() {
- // FIXME works for View2D only
var map = this.getMap();
- var view = map.getView().getView2D();
+ var view = map.getView();
+ goog.asserts.assert(goog.isDef(view));
var extent = this.getGeometry().getExtent();
var center = ol.extent.getCenter(extent);
+ var size = map.getSize();
+ goog.asserts.assert(goog.isDef(size));
ol.interaction.Interaction.zoom(map, view,
- view.getResolutionForExtent(extent, map.getSize()),
+ view.getResolutionForExtent(extent, size),
center, ol.DRAGZOOM_ANIMATION_DURATION);
};
diff --git a/src/ol/interaction/interaction.js b/src/ol/interaction/interaction.js
index e028bae89c..9e5a651d76 100644
--- a/src/ol/interaction/interaction.js
+++ b/src/ol/interaction/interaction.js
@@ -5,7 +5,6 @@ goog.provide('ol.interaction.Interaction');
goog.require('goog.asserts');
goog.require('ol.MapBrowserEvent');
goog.require('ol.Observable');
-goog.require('ol.View2D');
goog.require('ol.animation');
goog.require('ol.easing');
@@ -69,13 +68,12 @@ ol.interaction.Interaction.prototype.setMap = function(map) {
/**
* @param {ol.Map} map Map.
- * @param {ol.IView2D} view View.
+ * @param {ol.View} view View.
* @param {ol.Coordinate} delta Delta.
* @param {number=} opt_duration Duration.
*/
ol.interaction.Interaction.pan = function(
map, view, delta, opt_duration) {
- goog.asserts.assertInstanceof(view, ol.View2D);
var currentCenter = view.getCenter();
if (goog.isDef(currentCenter)) {
if (goog.isDef(opt_duration) && opt_duration > 0) {
@@ -94,14 +92,13 @@ ol.interaction.Interaction.pan = function(
/**
* @param {ol.Map} map Map.
- * @param {ol.IView2D} view View.
+ * @param {ol.View} view View.
* @param {number|undefined} rotation Rotation.
* @param {ol.Coordinate=} opt_anchor Anchor coordinate.
* @param {number=} opt_duration Duration.
*/
ol.interaction.Interaction.rotate =
function(map, view, rotation, opt_anchor, opt_duration) {
- goog.asserts.assertInstanceof(view, ol.View2D);
rotation = view.constrainRotation(rotation, 0);
ol.interaction.Interaction.rotateWithoutConstraints(
map, view, rotation, opt_anchor, opt_duration);
@@ -110,14 +107,13 @@ ol.interaction.Interaction.rotate =
/**
* @param {ol.Map} map Map.
- * @param {ol.IView2D} view View.
+ * @param {ol.View} view View.
* @param {number|undefined} rotation Rotation.
* @param {ol.Coordinate=} opt_anchor Anchor coordinate.
* @param {number=} opt_duration Duration.
*/
ol.interaction.Interaction.rotateWithoutConstraints =
function(map, view, rotation, opt_anchor, opt_duration) {
- goog.asserts.assertInstanceof(view, ol.View2D);
if (goog.isDefAndNotNull(rotation)) {
var currentRotation = view.getRotation();
var currentCenter = view.getCenter();
@@ -136,7 +132,6 @@ ol.interaction.Interaction.rotateWithoutConstraints =
}));
}
}
- goog.asserts.assertInstanceof(view, ol.View2D);
view.rotate(rotation, opt_anchor);
}
};
@@ -144,7 +139,7 @@ ol.interaction.Interaction.rotateWithoutConstraints =
/**
* @param {ol.Map} map Map.
- * @param {ol.IView2D} view View.
+ * @param {ol.View} view View.
* @param {number|undefined} resolution Resolution to go to.
* @param {ol.Coordinate=} opt_anchor Anchor coordinate.
* @param {number=} opt_duration Duration.
@@ -159,7 +154,6 @@ ol.interaction.Interaction.rotateWithoutConstraints =
*/
ol.interaction.Interaction.zoom =
function(map, view, resolution, opt_anchor, opt_duration, opt_direction) {
- goog.asserts.assertInstanceof(view, ol.View2D);
resolution = view.constrainResolution(resolution, 0, opt_direction);
ol.interaction.Interaction.zoomWithoutConstraints(
map, view, resolution, opt_anchor, opt_duration);
@@ -168,14 +162,13 @@ ol.interaction.Interaction.zoom =
/**
* @param {ol.Map} map Map.
- * @param {ol.IView2D} view View.
+ * @param {ol.View} view View.
* @param {number} delta Delta from previous zoom level.
* @param {ol.Coordinate=} opt_anchor Anchor coordinate.
* @param {number=} opt_duration Duration.
*/
ol.interaction.Interaction.zoomByDelta =
function(map, view, delta, opt_anchor, opt_duration) {
- goog.asserts.assertInstanceof(view, ol.View2D);
var currentResolution = view.getResolution();
var resolution = view.constrainResolution(currentResolution, delta, 0);
ol.interaction.Interaction.zoomWithoutConstraints(
@@ -185,14 +178,13 @@ ol.interaction.Interaction.zoomByDelta =
/**
* @param {ol.Map} map Map.
- * @param {ol.IView2D} view View.
+ * @param {ol.View} view View.
* @param {number|undefined} resolution Resolution to go to.
* @param {ol.Coordinate=} opt_anchor Anchor coordinate.
* @param {number=} opt_duration Duration.
*/
ol.interaction.Interaction.zoomWithoutConstraints =
function(map, view, resolution, opt_anchor, opt_duration) {
- goog.asserts.assertInstanceof(view, ol.View2D);
if (goog.isDefAndNotNull(resolution)) {
var currentResolution = view.getResolution();
var currentCenter = view.getCenter();
@@ -211,7 +203,6 @@ ol.interaction.Interaction.zoomWithoutConstraints =
}));
}
}
- goog.asserts.assertInstanceof(view, ol.View2D);
if (goog.isDefAndNotNull(opt_anchor)) {
var center = view.calculateCenterZoom(resolution, opt_anchor);
view.setCenter(center);
diff --git a/src/ol/interaction/keyboardpaninteraction.js b/src/ol/interaction/keyboardpaninteraction.js
index 6505d07b1a..e3463ccae0 100644
--- a/src/ol/interaction/keyboardpaninteraction.js
+++ b/src/ol/interaction/keyboardpaninteraction.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.interaction.KeyboardPan');
goog.require('goog.asserts');
@@ -7,7 +5,6 @@ goog.require('goog.events.KeyCodes');
goog.require('goog.events.KeyHandler.EventType');
goog.require('goog.functions');
goog.require('ol');
-goog.require('ol.View2D');
goog.require('ol.coordinate');
goog.require('ol.events.ConditionType');
goog.require('ol.events.condition');
@@ -72,11 +69,10 @@ ol.interaction.KeyboardPan.prototype.handleMapBrowserEvent =
keyCode == goog.events.KeyCodes.RIGHT ||
keyCode == goog.events.KeyCodes.UP)) {
var map = mapBrowserEvent.map;
- // FIXME works for View2D only
var view = map.getView();
- goog.asserts.assertInstanceof(view, ol.View2D);
- var view2DState = view.getView2DState();
- var mapUnitsDelta = view2DState.resolution * this.pixelDelta_;
+ goog.asserts.assert(goog.isDef(view));
+ var viewState = view.getState();
+ var mapUnitsDelta = viewState.resolution * this.pixelDelta_;
var deltaX = 0, deltaY = 0;
if (keyCode == goog.events.KeyCodes.DOWN) {
deltaY = -mapUnitsDelta;
@@ -88,7 +84,7 @@ ol.interaction.KeyboardPan.prototype.handleMapBrowserEvent =
deltaY = mapUnitsDelta;
}
var delta = [deltaX, deltaY];
- ol.coordinate.rotate(delta, view2DState.rotation);
+ ol.coordinate.rotate(delta, viewState.rotation);
ol.interaction.Interaction.pan(
map, view, delta, ol.KEYBOARD_PAN_DURATION);
mapBrowserEvent.preventDefault();
diff --git a/src/ol/interaction/keyboardzoominteraction.js b/src/ol/interaction/keyboardzoominteraction.js
index 1904917e98..02249d45f4 100644
--- a/src/ol/interaction/keyboardzoominteraction.js
+++ b/src/ol/interaction/keyboardzoominteraction.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.interaction.KeyboardZoom');
goog.require('goog.asserts');
@@ -71,8 +69,8 @@ ol.interaction.KeyboardZoom.prototype.handleMapBrowserEvent =
var map = mapBrowserEvent.map;
var delta = (charCode == '+'.charCodeAt(0)) ? this.delta_ : -this.delta_;
map.render();
- // FIXME works for View2D only
- var view = map.getView().getView2D();
+ var view = map.getView();
+ goog.asserts.assert(goog.isDef(view));
ol.interaction.Interaction.zoomByDelta(
map, view, delta, undefined, this.duration_);
mapBrowserEvent.preventDefault();
diff --git a/src/ol/interaction/mousewheelzoominteraction.js b/src/ol/interaction/mousewheelzoominteraction.js
index 631a6f4e25..1b382a44f7 100644
--- a/src/ol/interaction/mousewheelzoominteraction.js
+++ b/src/ol/interaction/mousewheelzoominteraction.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.interaction.MouseWheelZoom');
goog.require('goog.asserts');
@@ -102,8 +100,8 @@ ol.interaction.MouseWheelZoom.prototype.doZoom_ = function(map) {
var maxDelta = ol.MOUSEWHEELZOOM_MAXDELTA;
var delta = goog.math.clamp(this.delta_, -maxDelta, maxDelta);
- // FIXME works for View2D only
- var view = map.getView().getView2D();
+ var view = map.getView();
+ goog.asserts.assert(goog.isDef(view));
map.render();
ol.interaction.Interaction.zoomByDelta(map, view, -delta, this.lastAnchor_,
diff --git a/src/ol/interaction/pinchrotateinteraction.js b/src/ol/interaction/pinchrotateinteraction.js
index 7fcb20795f..88dc03d0a4 100644
--- a/src/ol/interaction/pinchrotateinteraction.js
+++ b/src/ol/interaction/pinchrotateinteraction.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.interaction.PinchRotate');
goog.require('goog.asserts');
@@ -103,12 +101,11 @@ ol.interaction.PinchRotate.prototype.handlePointerDrag =
// rotate
if (this.rotating_) {
- // FIXME works for View2D only
- var view = map.getView().getView2D();
- var view2DState = view.getView2DState();
+ var view = map.getView();
+ var viewState = view.getState();
map.render();
ol.interaction.Interaction.rotateWithoutConstraints(map, view,
- view2DState.rotation + rotationDelta, this.anchor_);
+ viewState.rotation + rotationDelta, this.anchor_);
}
};
@@ -123,11 +120,9 @@ ol.interaction.PinchRotate.prototype.handlePointerUp =
var view = map.getView();
view.setHint(ol.ViewHint.INTERACTING, -1);
if (this.rotating_) {
- // FIXME works for View2D only
- var view2D = view.getView2D();
- var view2DState = view2D.getView2DState();
+ var viewState = view.getState();
ol.interaction.Interaction.rotate(
- map, view2D, view2DState.rotation, this.anchor_,
+ map, view, viewState.rotation, this.anchor_,
ol.ROTATE_ANIMATION_DURATION);
}
return false;
diff --git a/src/ol/interaction/pinchzoominteraction.js b/src/ol/interaction/pinchzoominteraction.js
index 52a86ec127..5ae963214e 100644
--- a/src/ol/interaction/pinchzoominteraction.js
+++ b/src/ol/interaction/pinchzoominteraction.js
@@ -1,5 +1,3 @@
-// FIXME works for View2D only
-
goog.provide('ol.interaction.PinchZoom');
goog.require('goog.asserts');
@@ -80,9 +78,8 @@ ol.interaction.PinchZoom.prototype.handlePointerDrag =
}
var map = mapBrowserEvent.map;
- // FIXME works for View2D only
- var view = map.getView().getView2D();
- var view2DState = view.getView2DState();
+ var view = map.getView();
+ var viewState = view.getState();
// scale anchor point.
var viewportPosition = goog.style.getClientPosition(map.getViewport());
@@ -95,7 +92,7 @@ ol.interaction.PinchZoom.prototype.handlePointerDrag =
// scale, bypass the resolution constraint
map.render();
ol.interaction.Interaction.zoomWithoutConstraints(
- map, view, view2DState.resolution * scaleDelta, this.anchor_);
+ map, view, viewState.resolution * scaleDelta, this.anchor_);
};
@@ -109,14 +106,12 @@ ol.interaction.PinchZoom.prototype.handlePointerUp =
var map = mapBrowserEvent.map;
var view = map.getView();
view.setHint(ol.ViewHint.INTERACTING, -1);
- // FIXME works for View2D only
- var view2D = view.getView2D();
- var view2DState = view2D.getView2DState();
+ var viewState = view.getState();
// Zoom to final resolution, with an animation, and provide a
// direction not to zoom out/in if user was pinching in/out.
// Direction is > 0 if pinching out, and < 0 if pinching in.
var direction = this.lastScaleDelta_ - 1;
- ol.interaction.Interaction.zoom(map, view2D, view2DState.resolution,
+ ol.interaction.Interaction.zoom(map, view, viewState.resolution,
this.anchor_, this.duration_, direction);
return false;
} else {
diff --git a/src/ol/iview.js b/src/ol/iview.js
deleted file mode 100644
index bc04b93d6b..0000000000
--- a/src/ol/iview.js
+++ /dev/null
@@ -1,35 +0,0 @@
-goog.provide('ol.IView');
-
-goog.require('ol.IView2D');
-goog.require('ol.IView3D');
-
-
-
-/**
- * Interface for views.
- * @interface
- * @extends {goog.events.Listenable}
- */
-ol.IView = function() {
-};
-
-
-/**
- * @return {ol.IView2D} View2D.
- */
-ol.IView.prototype.getView2D = function() {
-};
-
-
-/**
- * @return {ol.IView3D} View3D.
- */
-ol.IView.prototype.getView3D = function() {
-};
-
-
-/**
- * @return {boolean} Is defined.
- */
-ol.IView.prototype.isDef = function() {
-};
diff --git a/src/ol/iview2d.js b/src/ol/iview2d.js
deleted file mode 100644
index 50ad5aa1cf..0000000000
--- a/src/ol/iview2d.js
+++ /dev/null
@@ -1,54 +0,0 @@
-goog.provide('ol.IView2D');
-
-goog.require('ol.Coordinate');
-
-
-
-/**
- * Interface for views.
- * @interface
- */
-ol.IView2D = function() {
-};
-
-
-/**
- * @return {ol.Coordinate|undefined} The center of the view.
- */
-ol.IView2D.prototype.getCenter = function() {
-};
-
-
-/**
- * @return {ol.proj.Projection|undefined} The projection of the view.
- */
-ol.IView2D.prototype.getProjection = function() {
-};
-
-
-/**
- * @return {number|undefined} The resolution of the view.
- */
-ol.IView2D.prototype.getResolution = function() {
-};
-
-
-/**
- * @return {number|undefined} The rotation of the view.
- */
-ol.IView2D.prototype.getRotation = function() {
-};
-
-
-/**
- * @return {olx.View2DState} View2D state.
- */
-ol.IView2D.prototype.getView2DState = function() {
-};
-
-
-/**
- * @return {boolean} Is defined.
- */
-ol.IView2D.prototype.isDef = function() {
-};
diff --git a/src/ol/iview3d.js b/src/ol/iview3d.js
deleted file mode 100644
index b54f7d7e42..0000000000
--- a/src/ol/iview3d.js
+++ /dev/null
@@ -1,17 +0,0 @@
-goog.provide('ol.IView3D');
-
-
-
-/**
- * Interface for views.
- * @interface
- */
-ol.IView3D = function() {
-};
-
-
-/**
- * @return {boolean} Is defined.
- */
-ol.IView3D.prototype.isDef = function() {
-};
diff --git a/src/ol/map.js b/src/ol/map.js
index 07aedc3fd4..b611cf3e65 100644
--- a/src/ol/map.js
+++ b/src/ol/map.js
@@ -30,7 +30,6 @@ goog.require('goog.vec.Mat4');
goog.require('ol.BrowserFeature');
goog.require('ol.Collection');
goog.require('ol.CollectionEventType');
-goog.require('ol.IView');
goog.require('ol.MapBrowserEvent');
goog.require('ol.MapBrowserEvent.EventType');
goog.require('ol.MapBrowserEventHandler');
@@ -47,7 +46,6 @@ goog.require('ol.Size');
goog.require('ol.Tile');
goog.require('ol.TileQueue');
goog.require('ol.View');
-goog.require('ol.View2D');
goog.require('ol.ViewHint');
goog.require('ol.control');
goog.require('ol.extent');
@@ -127,7 +125,7 @@ ol.MapProperty = {
* needs a view, one or more layers, and a target container:
*
* var map = new ol.Map({
- * view: new ol.View2D({
+ * view: new ol.View({
* center: [0, 0],
* zoom: 1
* }),
@@ -748,14 +746,14 @@ goog.exportProperty(
/**
- * Get the view associated with this map. This can be a 2D or 3D view. A 2D
- * view manages properties such as center and resolution.
- * @return {ol.IView|undefined} The view that controls this map.
+ * Get the view associated with this map. A view manages properties such as
+ * center and resolution.
+ * @return {ol.View|undefined} The view that controls this map.
* @todo observable
* @todo api stable
*/
ol.Map.prototype.getView = function() {
- return /** @type {ol.IView} */ (this.get(ol.MapProperty.VIEW));
+ return /** @type {ol.View} */ (this.get(ol.MapProperty.VIEW));
};
goog.exportProperty(
ol.Map.prototype,
@@ -1166,7 +1164,7 @@ ol.Map.prototype.removeOverlay = function(overlay) {
*/
ol.Map.prototype.renderFrame_ = function(time) {
- var i, ii, view2DState;
+ var i, ii, viewState;
/**
* Check whether a size has non-zero width and height. Note that this
@@ -1184,24 +1182,23 @@ ol.Map.prototype.renderFrame_ = function(time) {
var size = this.getSize();
var view = this.getView();
- var view2D = goog.isDef(view) ? this.getView().getView2D() : undefined;
/** @type {?olx.FrameState} */
var frameState = null;
if (goog.isDef(size) && hasArea(size) &&
- goog.isDef(view2D) && view2D.isDef()) {
+ goog.isDef(view) && view.isDef()) {
var viewHints = view.getHints();
var layerStatesArray = this.getLayerGroup().getLayerStatesArray();
var layerStates = {};
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
layerStates[goog.getUid(layerStatesArray[i].layer)] = layerStatesArray[i];
}
- view2DState = view2D.getView2DState();
+ viewState = view.getState();
frameState = /** @type {olx.FrameState} */ ({
animate: false,
attributions: {},
coordinateToPixelMatrix: this.coordinateToPixelMatrix_,
extent: null,
- focus: goog.isNull(this.focus_) ? view2DState.center : this.focus_,
+ focus: goog.isNull(this.focus_) ? viewState.center : this.focus_,
index: this.frameIndex_++,
layerStates: layerStates,
layerStatesArray: layerStatesArray,
@@ -1214,7 +1211,7 @@ ol.Map.prototype.renderFrame_ = function(time) {
tileQueue: this.tileQueue_,
time: time,
usedTiles: {},
- view2DState: view2DState,
+ viewState: viewState,
viewHints: viewHints,
wantedTiles: {}
});
@@ -1234,9 +1231,8 @@ ol.Map.prototype.renderFrame_ = function(time) {
preRenderFunctions.length = n;
if (!goog.isNull(frameState)) {
- // FIXME works for View2D only
- frameState.extent = ol.extent.getForView2DAndSize(view2DState.center,
- view2DState.resolution, view2DState.rotation, frameState.size);
+ frameState.extent = ol.extent.getForViewAndSize(viewState.center,
+ viewState.resolution, viewState.rotation, frameState.size);
}
this.frameState_ = frameState;
@@ -1319,7 +1315,7 @@ goog.exportProperty(
/**
* Set the view for this map.
- * @param {ol.IView} view The view that controls this map.
+ * @param {ol.View} view The view that controls this map.
* @todo observable
* @todo api stable
*/
@@ -1421,7 +1417,7 @@ ol.Map.createOptionsInternal = function(options) {
values[ol.MapProperty.TARGET] = options.target;
values[ol.MapProperty.VIEW] = goog.isDef(options.view) ?
- options.view : new ol.View2D();
+ options.view : new ol.View();
/**
* @type {function(new: ol.renderer.Map, Element, ol.Map)}
diff --git a/src/ol/renderer/canvas/canvasimagelayerrenderer.js b/src/ol/renderer/canvas/canvasimagelayerrenderer.js
index 26da9bb50e..706a64b3eb 100644
--- a/src/ol/renderer/canvas/canvasimagelayerrenderer.js
+++ b/src/ol/renderer/canvas/canvasimagelayerrenderer.js
@@ -50,8 +50,8 @@ ol.renderer.canvas.ImageLayer.prototype.forEachFeatureAtPixel =
var source = layer.getSource();
goog.asserts.assertInstanceof(source, ol.source.Image);
var extent = frameState.extent;
- var resolution = frameState.view2DState.resolution;
- var rotation = frameState.view2DState.rotation;
+ var resolution = frameState.viewState.resolution;
+ var rotation = frameState.viewState.rotation;
var skippedFeatureUids = frameState.skippedFeatureUids_;
return source.forEachFeatureAtPixel(
extent, resolution, rotation, coordinate, skippedFeatureUids,
@@ -89,10 +89,10 @@ ol.renderer.canvas.ImageLayer.prototype.prepareFrame =
function(frameState, layerState) {
var pixelRatio = frameState.pixelRatio;
- var view2DState = frameState.view2DState;
- var viewCenter = view2DState.center;
- var viewResolution = view2DState.resolution;
- var viewRotation = view2DState.rotation;
+ var viewState = frameState.viewState;
+ var viewCenter = viewState.center;
+ var viewResolution = viewState.resolution;
+ var viewRotation = viewState.rotation;
var image;
var imageLayer = this.getLayer();
@@ -104,7 +104,7 @@ ol.renderer.canvas.ImageLayer.prototype.prepareFrame =
if (!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) {
image = imageSource.getImage(
- frameState.extent, viewResolution, pixelRatio, view2DState.projection);
+ frameState.extent, viewResolution, pixelRatio, viewState.projection);
if (!goog.isNull(image)) {
var imageState = image.getState();
if (imageState == ol.ImageState.IDLE) {
diff --git a/src/ol/renderer/canvas/canvaslayerrenderer.js b/src/ol/renderer/canvas/canvaslayerrenderer.js
index 2732f5a1a0..92c59a934a 100644
--- a/src/ol/renderer/canvas/canvaslayerrenderer.js
+++ b/src/ol/renderer/canvas/canvaslayerrenderer.js
@@ -49,7 +49,7 @@ ol.renderer.canvas.Layer.prototype.composeFrame =
// for performance reasons, context.setTransform is only used
// when the view is rotated. see http://jsperf.com/canvas-transform
- if (frameState.view2DState.rotation === 0) {
+ if (frameState.viewState.rotation === 0) {
var dx = goog.vec.Mat4.getElement(imageTransform, 0, 3);
var dy = goog.vec.Mat4.getElement(imageTransform, 1, 3);
var dw = image.width * goog.vec.Mat4.getElement(imageTransform, 0, 0);
@@ -89,7 +89,7 @@ ol.renderer.canvas.Layer.prototype.dispatchComposeEvent_ =
opt_transform : this.getTransform(frameState);
var render = new ol.render.canvas.Immediate(
context, frameState.pixelRatio, frameState.extent, transform,
- frameState.view2DState.rotation);
+ frameState.viewState.rotation);
var composeEvent = new ol.render.Event(type, layer, render, null,
frameState, context, null);
layer.dispatchEvent(composeEvent);
@@ -155,15 +155,15 @@ ol.renderer.canvas.Layer.prototype.getImageTransform = goog.abstractMethod;
* @return {!goog.vec.Mat4.Number} Transform.
*/
ol.renderer.canvas.Layer.prototype.getTransform = function(frameState) {
- var view2DState = frameState.view2DState;
+ var viewState = frameState.viewState;
var pixelRatio = frameState.pixelRatio;
return ol.vec.Mat4.makeTransform2D(this.transform_,
pixelRatio * frameState.size[0] / 2,
pixelRatio * frameState.size[1] / 2,
- pixelRatio / view2DState.resolution,
- -pixelRatio / view2DState.resolution,
- -view2DState.rotation,
- -view2DState.center[0], -view2DState.center[1]);
+ pixelRatio / viewState.resolution,
+ -pixelRatio / viewState.resolution,
+ -viewState.rotation,
+ -viewState.center[0], -viewState.center[1]);
};
diff --git a/src/ol/renderer/canvas/canvasmaprenderer.js b/src/ol/renderer/canvas/canvasmaprenderer.js
index 7177e5c824..a68643fcb1 100644
--- a/src/ol/renderer/canvas/canvasmaprenderer.js
+++ b/src/ol/renderer/canvas/canvasmaprenderer.js
@@ -101,16 +101,16 @@ ol.renderer.canvas.Map.prototype.dispatchComposeEvent_ =
if (map.hasListener(type)) {
var extent = frameState.extent;
var pixelRatio = frameState.pixelRatio;
- var view2DState = frameState.view2DState;
- var resolution = view2DState.resolution;
- var rotation = view2DState.rotation;
+ var viewState = frameState.viewState;
+ var resolution = viewState.resolution;
+ var rotation = viewState.rotation;
ol.vec.Mat4.makeTransform2D(this.transform_,
this.canvas_.width / 2,
this.canvas_.height / 2,
- pixelRatio / view2DState.resolution,
- -pixelRatio / view2DState.resolution,
- -view2DState.rotation,
- -view2DState.center[0], -view2DState.center[1]);
+ pixelRatio / viewState.resolution,
+ -pixelRatio / viewState.resolution,
+ -viewState.rotation,
+ -viewState.center[0], -viewState.center[1]);
var vectorContext = new ol.render.canvas.Immediate(context, pixelRatio,
extent, this.transform_, rotation);
var replayGroup = new ol.render.canvas.ReplayGroup(
@@ -177,7 +177,7 @@ ol.renderer.canvas.Map.prototype.renderFrame = function(frameState) {
this.dispatchComposeEvent_(ol.render.EventType.PRECOMPOSE, frameState);
var layerStatesArray = frameState.layerStatesArray;
- var viewResolution = frameState.view2DState.resolution;
+ var viewResolution = frameState.viewState.resolution;
var i, ii, layer, layerRenderer, layerState;
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
layerState = layerStatesArray[i];
diff --git a/src/ol/renderer/canvas/canvastilelayerrenderer.js b/src/ol/renderer/canvas/canvastilelayerrenderer.js
index 921d2fda46..0cd350e733 100644
--- a/src/ol/renderer/canvas/canvastilelayerrenderer.js
+++ b/src/ol/renderer/canvas/canvastilelayerrenderer.js
@@ -170,8 +170,8 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
//
var pixelRatio = frameState.pixelRatio;
- var view2DState = frameState.view2DState;
- var projection = view2DState.projection;
+ var viewState = frameState.viewState;
+ var projection = viewState.projection;
var tileLayer = this.getLayer();
goog.asserts.assertInstanceof(tileLayer, ol.layer.Tile);
@@ -179,18 +179,18 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
goog.asserts.assertInstanceof(tileSource, ol.source.Tile);
var tileGrid = tileSource.getTileGridForProjection(projection);
var tileGutter = tileSource.getGutter();
- var z = tileGrid.getZForResolution(view2DState.resolution);
+ var z = tileGrid.getZForResolution(viewState.resolution);
var tilePixelSize =
tileSource.getTilePixelSize(z, frameState.pixelRatio, projection);
var tilePixelRatio = tilePixelSize / tileGrid.getTileSize(z);
var tileResolution = tileGrid.getResolution(z);
var tilePixelResolution = tileResolution / tilePixelRatio;
- var center = view2DState.center;
+ var center = viewState.center;
var extent;
- if (tileResolution == view2DState.resolution) {
+ if (tileResolution == viewState.resolution) {
center = this.snapCenterToPixel(center, tileResolution, frameState.size);
- extent = ol.extent.getForView2DAndSize(
- center, tileResolution, view2DState.rotation, frameState.size);
+ extent = ol.extent.getForViewAndSize(
+ center, tileResolution, viewState.rotation, frameState.size);
} else {
extent = frameState.extent;
}
@@ -400,9 +400,9 @@ ol.renderer.canvas.TileLayer.prototype.prepareFrame =
ol.vec.Mat4.makeTransform2D(this.imageTransform_,
pixelRatio * frameState.size[0] / 2,
pixelRatio * frameState.size[1] / 2,
- pixelRatio * tilePixelResolution / view2DState.resolution,
- pixelRatio * tilePixelResolution / view2DState.resolution,
- view2DState.rotation,
+ pixelRatio * tilePixelResolution / viewState.resolution,
+ pixelRatio * tilePixelResolution / viewState.resolution,
+ viewState.rotation,
(origin[0] - center[0]) / tilePixelResolution,
(center[1] - origin[1]) / tilePixelResolution);
diff --git a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js
index 19970bdc7f..9160be7192 100644
--- a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js
+++ b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js
@@ -97,7 +97,7 @@ ol.renderer.canvas.VectorLayer.prototype.composeFrame =
replayContext.globalAlpha = layerState.opacity;
replayGroup.replay(
replayContext, frameState.extent, frameState.pixelRatio, transform,
- frameState.view2DState.rotation, frameState.skippedFeatureUids_);
+ frameState.viewState.rotation, frameState.skippedFeatureUids_);
if (replayContext != context) {
this.dispatchRenderEvent(replayContext, frameState, transform);
@@ -119,8 +119,8 @@ ol.renderer.canvas.VectorLayer.prototype.forEachFeatureAtPixel =
return undefined;
} else {
var extent = frameState.extent;
- var resolution = frameState.view2DState.resolution;
- var rotation = frameState.view2DState.rotation;
+ var resolution = frameState.viewState.resolution;
+ var rotation = frameState.viewState.rotation;
var layer = this.getLayer();
return this.replayGroup_.forEachGeometryAtPixel(extent, resolution,
rotation, coordinate, frameState.skippedFeatureUids_,
@@ -170,9 +170,9 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
}
var frameStateExtent = frameState.extent;
- var view2DState = frameState.view2DState;
- var projection = view2DState.projection;
- var resolution = view2DState.resolution;
+ var viewState = frameState.viewState;
+ var projection = viewState.projection;
+ var resolution = viewState.resolution;
var pixelRatio = frameState.pixelRatio;
var vectorLayerRevision = vectorLayer.getRevision();
var vectorLayerRenderOrder = vectorLayer.getRenderOrder();
diff --git a/src/ol/renderer/dom/domimagelayerrenderer.js b/src/ol/renderer/dom/domimagelayerrenderer.js
index 7cacb017e2..dca23f358e 100644
--- a/src/ol/renderer/dom/domimagelayerrenderer.js
+++ b/src/ol/renderer/dom/domimagelayerrenderer.js
@@ -55,8 +55,8 @@ ol.renderer.dom.ImageLayer.prototype.forEachFeatureAtPixel =
var source = layer.getSource();
goog.asserts.assertInstanceof(source, ol.source.Image);
var extent = frameState.extent;
- var resolution = frameState.view2DState.resolution;
- var rotation = frameState.view2DState.rotation;
+ var resolution = frameState.viewState.resolution;
+ var rotation = frameState.viewState.rotation;
var skippedFeatureUids = frameState.skippedFeatureUids_;
return source.forEachFeatureAtPixel(
extent, resolution, rotation, coordinate, skippedFeatureUids,
@@ -76,10 +76,10 @@ ol.renderer.dom.ImageLayer.prototype.forEachFeatureAtPixel =
ol.renderer.dom.ImageLayer.prototype.prepareFrame =
function(frameState, layerState) {
- var view2DState = frameState.view2DState;
- var viewCenter = view2DState.center;
- var viewResolution = view2DState.resolution;
- var viewRotation = view2DState.rotation;
+ var viewState = frameState.viewState;
+ var viewCenter = viewState.center;
+ var viewResolution = viewState.resolution;
+ var viewRotation = viewState.rotation;
var image = this.image_;
var imageLayer = this.getLayer();
@@ -91,7 +91,7 @@ ol.renderer.dom.ImageLayer.prototype.prepareFrame =
if (!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) {
var image_ = imageSource.getImage(frameState.extent, viewResolution,
- frameState.pixelRatio, view2DState.projection);
+ frameState.pixelRatio, viewState.projection);
if (!goog.isNull(image_)) {
var imageState = image_.getState();
if (imageState == ol.ImageState.IDLE) {
diff --git a/src/ol/renderer/dom/domtilelayerrenderer.js b/src/ol/renderer/dom/domtilelayerrenderer.js
index f76952cbb7..bfb7be4c35 100644
--- a/src/ol/renderer/dom/domtilelayerrenderer.js
+++ b/src/ol/renderer/dom/domtilelayerrenderer.js
@@ -90,8 +90,8 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame =
}
var pixelRatio = frameState.pixelRatio;
- var view2DState = frameState.view2DState;
- var projection = view2DState.projection;
+ var viewState = frameState.viewState;
+ var projection = viewState.projection;
var tileLayer = this.getLayer();
goog.asserts.assertInstanceof(tileLayer, ol.layer.Tile);
@@ -99,14 +99,14 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame =
goog.asserts.assertInstanceof(tileSource, ol.source.Tile);
var tileGrid = tileSource.getTileGridForProjection(projection);
var tileGutter = tileSource.getGutter();
- var z = tileGrid.getZForResolution(view2DState.resolution);
+ var z = tileGrid.getZForResolution(viewState.resolution);
var tileResolution = tileGrid.getResolution(z);
- var center = view2DState.center;
+ var center = viewState.center;
var extent;
- if (tileResolution == view2DState.resolution) {
+ if (tileResolution == viewState.resolution) {
center = this.snapCenterToPixel(center, tileResolution, frameState.size);
- extent = ol.extent.getForView2DAndSize(
- center, tileResolution, view2DState.rotation, frameState.size);
+ extent = ol.extent.getForViewAndSize(
+ center, tileResolution, viewState.rotation, frameState.size);
} else {
extent = frameState.extent;
}
@@ -217,9 +217,9 @@ ol.renderer.dom.TileLayer.prototype.prepareFrame =
origin = tileLayerZ.getOrigin();
ol.vec.Mat4.makeTransform2D(transform,
frameState.size[0] / 2, frameState.size[1] / 2,
- resolution / view2DState.resolution,
- resolution / view2DState.resolution,
- view2DState.rotation,
+ resolution / viewState.resolution,
+ resolution / viewState.resolution,
+ viewState.rotation,
(origin[0] - center[0]) / resolution,
(center[1] - origin[1]) / resolution);
tileLayerZ.setTransform(transform);
diff --git a/src/ol/renderer/maprenderer.js b/src/ol/renderer/maprenderer.js
index d8cd7cf3a8..2cd9c5fe4b 100644
--- a/src/ol/renderer/maprenderer.js
+++ b/src/ol/renderer/maprenderer.js
@@ -64,14 +64,14 @@ goog.inherits(ol.renderer.Map, goog.Disposable);
* @protected
*/
ol.renderer.Map.prototype.calculateMatrices2D = function(frameState) {
- var view2DState = frameState.view2DState;
+ var viewState = frameState.viewState;
var coordinateToPixelMatrix = frameState.coordinateToPixelMatrix;
goog.asserts.assert(!goog.isNull(coordinateToPixelMatrix));
ol.vec.Mat4.makeTransform2D(coordinateToPixelMatrix,
frameState.size[0] / 2, frameState.size[1] / 2,
- 1 / view2DState.resolution, -1 / view2DState.resolution,
- -view2DState.rotation,
- -view2DState.center[0], -view2DState.center[1]);
+ 1 / viewState.resolution, -1 / viewState.resolution,
+ -viewState.rotation,
+ -viewState.center[0], -viewState.center[1]);
var inverted = goog.vec.Mat4.invert(
coordinateToPixelMatrix, frameState.pixelToCoordinateMatrix);
goog.asserts.assert(inverted);
@@ -118,9 +118,9 @@ ol.renderer.Map.prototype.forEachFeatureAtPixel =
layerFilter, thisArg2) {
var result;
var extent = frameState.extent;
- var view2DState = frameState.view2DState;
- var viewResolution = view2DState.resolution;
- var viewRotation = view2DState.rotation;
+ var viewState = frameState.viewState;
+ var viewResolution = viewState.resolution;
+ var viewRotation = viewState.rotation;
if (!goog.isNull(this.replayGroup)) {
/** @type {Object.} */
var features = {};
diff --git a/src/ol/renderer/webgl/webglimagelayerrenderer.js b/src/ol/renderer/webgl/webglimagelayerrenderer.js
index cdbdba2c11..b9187754ed 100644
--- a/src/ol/renderer/webgl/webglimagelayerrenderer.js
+++ b/src/ol/renderer/webgl/webglimagelayerrenderer.js
@@ -81,8 +81,8 @@ ol.renderer.webgl.ImageLayer.prototype.forEachFeatureAtPixel =
var source = layer.getSource();
goog.asserts.assertInstanceof(source, ol.source.Image);
var extent = frameState.extent;
- var resolution = frameState.view2DState.resolution;
- var rotation = frameState.view2DState.rotation;
+ var resolution = frameState.viewState.resolution;
+ var rotation = frameState.viewState.rotation;
var skippedFeatureUids = frameState.skippedFeatureUids_;
return source.forEachFeatureAtPixel(
extent, resolution, rotation, coordinate, skippedFeatureUids,
@@ -105,10 +105,10 @@ ol.renderer.webgl.ImageLayer.prototype.prepareFrame =
var gl = this.getWebGLMapRenderer().getGL();
- var view2DState = frameState.view2DState;
- var viewCenter = view2DState.center;
- var viewResolution = view2DState.resolution;
- var viewRotation = view2DState.rotation;
+ var viewState = frameState.viewState;
+ var viewCenter = viewState.center;
+ var viewResolution = viewState.resolution;
+ var viewRotation = viewState.rotation;
var image = this.image_;
var texture = this.texture;
@@ -121,7 +121,7 @@ ol.renderer.webgl.ImageLayer.prototype.prepareFrame =
if (!hints[ol.ViewHint.ANIMATING] && !hints[ol.ViewHint.INTERACTING]) {
var image_ = imageSource.getImage(frameState.extent, viewResolution,
- frameState.pixelRatio, view2DState.projection);
+ frameState.pixelRatio, viewState.projection);
if (!goog.isNull(image_)) {
var imageState = image_.getState();
if (imageState == ol.ImageState.IDLE) {
diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js
index ecb2c222fe..ee19053f1a 100644
--- a/src/ol/renderer/webgl/webglmaprenderer.js
+++ b/src/ol/renderer/webgl/webglmaprenderer.js
@@ -448,7 +448,7 @@ ol.renderer.webgl.Map.prototype.renderFrame = function(frameState) {
/** @type {Array.} */
var layerStatesToDraw = [];
var layerStatesArray = frameState.layerStatesArray;
- var viewResolution = frameState.view2DState.resolution;
+ var viewResolution = frameState.viewState.resolution;
var i, ii, layerState;
for (i = 0, ii = layerStatesArray.length; i < ii; ++i) {
layerState = layerStatesArray[i];
diff --git a/src/ol/renderer/webgl/webgltilelayerrenderer.js b/src/ol/renderer/webgl/webgltilelayerrenderer.js
index de21054637..df15184175 100644
--- a/src/ol/renderer/webgl/webgltilelayerrenderer.js
+++ b/src/ol/renderer/webgl/webgltilelayerrenderer.js
@@ -114,15 +114,15 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame =
var context = mapRenderer.getContext();
var gl = mapRenderer.getGL();
- var view2DState = frameState.view2DState;
- var projection = view2DState.projection;
+ var viewState = frameState.viewState;
+ var projection = viewState.projection;
var tileLayer = this.getLayer();
goog.asserts.assertInstanceof(tileLayer, ol.layer.Tile);
var tileSource = tileLayer.getSource();
goog.asserts.assertInstanceof(tileSource, ol.source.Tile);
var tileGrid = tileSource.getTileGridForProjection(projection);
- var z = tileGrid.getZForResolution(view2DState.resolution);
+ var z = tileGrid.getZForResolution(viewState.resolution);
var tileResolution = tileGrid.getResolution(z);
var tilePixelSize =
@@ -131,12 +131,12 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame =
var tilePixelResolution = tileResolution / pixelRatio;
var tileGutter = tileSource.getGutter();
- var center = view2DState.center;
+ var center = viewState.center;
var extent;
- if (tileResolution == view2DState.resolution) {
+ if (tileResolution == viewState.resolution) {
center = this.snapCenterToPixel(center, tileResolution, frameState.size);
- extent = ol.extent.getForView2DAndSize(
- center, tileResolution, view2DState.rotation, frameState.size);
+ extent = ol.extent.getForViewAndSize(
+ center, tileResolution, viewState.rotation, frameState.size);
} else {
extent = frameState.extent;
}
@@ -310,13 +310,13 @@ ol.renderer.webgl.TileLayer.prototype.prepareFrame =
(center[1] - framebufferExtent[1]) /
(framebufferExtent[3] - framebufferExtent[1]),
0);
- if (view2DState.rotation !== 0) {
- goog.vec.Mat4.rotateZ(texCoordMatrix, view2DState.rotation);
+ if (viewState.rotation !== 0) {
+ goog.vec.Mat4.rotateZ(texCoordMatrix, viewState.rotation);
}
goog.vec.Mat4.scale(texCoordMatrix,
- frameState.size[0] * view2DState.resolution /
+ frameState.size[0] * viewState.resolution /
(framebufferExtent[2] - framebufferExtent[0]),
- frameState.size[1] * view2DState.resolution /
+ frameState.size[1] * viewState.resolution /
(framebufferExtent[3] - framebufferExtent[1]),
1);
goog.vec.Mat4.translate(texCoordMatrix,
diff --git a/src/ol/view.js b/src/ol/view.js
index f67d852fae..abdbf93cfa 100644
--- a/src/ol/view.js
+++ b/src/ol/view.js
@@ -3,8 +3,31 @@ goog.provide('ol.ViewHint');
goog.require('goog.array');
goog.require('goog.asserts');
-goog.require('ol.IView');
+goog.require('ol');
+goog.require('ol.CenterConstraint');
+goog.require('ol.Constraints');
goog.require('ol.Object');
+goog.require('ol.ResolutionConstraint');
+goog.require('ol.RotationConstraint');
+goog.require('ol.RotationConstraintType');
+goog.require('ol.Size');
+goog.require('ol.coordinate');
+goog.require('ol.extent');
+goog.require('ol.proj');
+goog.require('ol.proj.METERS_PER_UNIT');
+goog.require('ol.proj.Projection');
+goog.require('ol.proj.Units');
+
+
+/**
+ * @enum {string}
+ */
+ol.ViewProperty = {
+ CENTER: 'center',
+ PROJECTION: 'projection',
+ RESOLUTION: 'resolution',
+ ROTATION: 'rotation'
+};
/**
@@ -19,22 +42,58 @@ ol.ViewHint = {
/**
* @classdesc
- * Abstract base class; normally only used for creating subclasses and not
- * instantiated in apps.
- * Maps can be viewed from different perspectives: 2D or 3D, or at different
- * angles. To enable this, properties determining projection, position, angle or
- * rotation cannot be part of the map itself, but of the particular view of that
- * map. This is similar to the concept of Camera in Google Earth or KML.
+ * An ol.View object represents a simple 2D view of the map.
*
- * Only {@link ol.View2D} is currently implemented.
+ * This is the object to act upon to change the center, resolution,
+ * and rotation of the map.
+ *
+ * ### The view states
+ *
+ * An `ol.View` is determined by three states: `center`, `resolution`,
+ * and `rotation`. To each state corresponds a getter and a setter. E.g.
+ * `getCenter` and `setCenter` for the `center` state.
+ *
+ * An `ol.View` has a `projection`. The projection determines the
+ * coordinate system of the center, and its units determine the units of the
+ * resolution (projection units per pixel). The default projection is
+ * Spherical Mercator (EPSG:3857).
+ *
+ * ### The constraints
+ *
+ * `setCenter`, `setResolution` and `setRotation` can be used to change the
+ * states of the view. Any value can be passed to the setters. And the value
+ * that is passed to a setter will effectively be the value set in the view,
+ * and returned by the corresponding getter.
+ *
+ * But an `ol.View` object also has a *resolution constraint*, a
+ * *rotation constraint* and a *center constraint*.
+ *
+ * As said above no constraints are applied when the setters are used to set
+ * new states for the view. Applying constraints is done explicitly through
+ * the use of the `constrain*` functions (`constrainResolution` and
+ * `constrainRotation` and `constrainCenter`).
+ *
+ * The main users of the constraints are the interactions and the
+ * controls. For example, double-clicking on the map changes the view to
+ * the "next" resolution. And releasing the fingers after pinch-zooming
+ * snaps to the closest resolution (with an animation).
+ *
+ * So the *resolution constraint* snaps to specific resolutions. It is
+ * determined by the following options: `resolutions`, `maxResolution`,
+ * `maxZoom`, and `zoomFactor`. If `resolutions` is set, the other three
+ * options are ignored. See {@link ol.ViewOptions} for more information.
+ *
+ * The *rotation constaint* is currently not configurable. It snaps the
+ * rotation value to zero when approaching the horizontal.
*
* @constructor
- * @implements {ol.IView}
* @extends {ol.Object}
+ * @param {olx.ViewOptions=} opt_options View options.
+ * @todo api
*/
-ol.View = function() {
-
+ol.View = function(opt_options) {
goog.base(this);
+ var options = goog.isDef(opt_options) ? opt_options : {};
/**
* @private
@@ -42,10 +101,152 @@ ol.View = function() {
*/
this.hints_ = [0, 0];
+ /**
+ * @type {Object.}
+ */
+ var values = {};
+ values[ol.ViewProperty.CENTER] = goog.isDef(options.center) ?
+ options.center : null;
+ values[ol.ViewProperty.PROJECTION] = ol.proj.createProjection(
+ options.projection, 'EPSG:3857');
+
+ var resolutionConstraintInfo = ol.View.createResolutionConstraint_(
+ options);
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.maxResolution_ = resolutionConstraintInfo.maxResolution;
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.minResolution_ = resolutionConstraintInfo.minResolution;
+
+ /**
+ * @private
+ * @type {number}
+ */
+ this.minZoom_ = resolutionConstraintInfo.minZoom;
+
+ var centerConstraint = ol.View.createCenterConstraint_(options);
+ var resolutionConstraint = resolutionConstraintInfo.constraint;
+ var rotationConstraint = ol.View.createRotationConstraint_(options);
+
+ /**
+ * @private
+ * @type {ol.Constraints}
+ */
+ this.constraints_ = new ol.Constraints(
+ centerConstraint, resolutionConstraint, rotationConstraint);
+
+ if (goog.isDef(options.resolution)) {
+ values[ol.ViewProperty.RESOLUTION] = options.resolution;
+ } else if (goog.isDef(options.zoom)) {
+ values[ol.ViewProperty.RESOLUTION] = this.constrainResolution(
+ this.maxResolution_, options.zoom - this.minZoom_);
+ }
+ values[ol.ViewProperty.ROTATION] =
+ goog.isDef(options.rotation) ? options.rotation : 0;
+ this.setValues(values);
};
goog.inherits(ol.View, ol.Object);
+/**
+ * @param {number} rotation Target rotation.
+ * @param {ol.Coordinate} anchor Rotation anchor.
+ * @return {ol.Coordinate|undefined} Center for rotation and anchor.
+ */
+ol.View.prototype.calculateCenterRotate = function(rotation, anchor) {
+ var center;
+ var currentCenter = this.getCenter();
+ if (goog.isDef(currentCenter)) {
+ center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];
+ ol.coordinate.rotate(center, rotation - this.getRotation());
+ ol.coordinate.add(center, anchor);
+ }
+ return center;
+};
+
+
+/**
+ * @param {number} resolution Target resolution.
+ * @param {ol.Coordinate} anchor Zoom anchor.
+ * @return {ol.Coordinate|undefined} Center for resolution and anchor.
+ */
+ol.View.prototype.calculateCenterZoom = function(resolution, anchor) {
+ var center;
+ var currentCenter = this.getCenter();
+ var currentResolution = this.getResolution();
+ if (goog.isDef(currentCenter) && goog.isDef(currentResolution)) {
+ var x = anchor[0] -
+ resolution * (anchor[0] - currentCenter[0]) / currentResolution;
+ var y = anchor[1] -
+ resolution * (anchor[1] - currentCenter[1]) / currentResolution;
+ center = [x, y];
+ }
+ return center;
+};
+
+
+/**
+ * Get the constrained center of this view.
+ * @param {ol.Coordinate|undefined} center Center.
+ * @return {ol.Coordinate|undefined} Constrained center.
+ * @todo api
+ */
+ol.View.prototype.constrainCenter = function(center) {
+ return this.constraints_.center(center);
+};
+
+
+/**
+ * Get the constrained resolution of this view.
+ * @param {number|undefined} resolution Resolution.
+ * @param {number=} opt_delta Delta. Default is `0`.
+ * @param {number=} opt_direction Direction. Default is `0`.
+ * @return {number|undefined} Constrained resolution.
+ * @todo api
+ */
+ol.View.prototype.constrainResolution = function(
+ resolution, opt_delta, opt_direction) {
+ var delta = opt_delta || 0;
+ var direction = opt_direction || 0;
+ return this.constraints_.resolution(resolution, delta, direction);
+};
+
+
+/**
+ * Get the constrained rotation of this view.
+ * @param {number|undefined} rotation Rotation.
+ * @param {number=} opt_delta Delta. Default is `0`.
+ * @return {number|undefined} Constrained rotation.
+ * @todo api
+ */
+ol.View.prototype.constrainRotation = function(rotation, opt_delta) {
+ var delta = opt_delta || 0;
+ return this.constraints_.rotation(rotation, delta);
+};
+
+
+/**
+ * @return {ol.Coordinate|undefined} The center of the view.
+ * @todo observable
+ * @todo api
+ */
+ol.View.prototype.getCenter = function() {
+ return /** @type {ol.Coordinate|undefined} */ (
+ this.get(ol.ViewProperty.CENTER));
+};
+goog.exportProperty(
+ ol.View.prototype,
+ 'getCenter',
+ ol.View.prototype.getCenter);
+
+
/**
* @return {Array.} Hint.
*/
@@ -55,35 +256,331 @@ ol.View.prototype.getHints = function() {
/**
- * @inheritDoc
+ * Calculate the extent for the given size in pixels, based on the current
+ * resolution and the current center.
+ * @param {ol.Size} size Box pixel size.
+ * @return {ol.Extent} Extent.
+ * @todo api
*/
-ol.View.prototype.getView2D = function() {
- // FIXME for some reason, we can't use goog.abstractMethod here
- goog.asserts.fail();
- return null;
+ol.View.prototype.calculateExtent = function(size) {
+ goog.asserts.assert(this.isDef());
+ var center = this.getCenter();
+ var resolution = this.getResolution();
+ var minX = center[0] - resolution * size[0] / 2;
+ var maxX = center[0] + resolution * size[0] / 2;
+ var minY = center[1] - resolution * size[1] / 2;
+ var maxY = center[1] + resolution * size[1] / 2;
+ return [minX, minY, maxX, maxY];
};
/**
- * @inheritDoc
+ * @return {ol.proj.Projection|undefined} The projection of the view.
+ * @todo observable
+ * @todo api
*/
-ol.View.prototype.getView3D = function() {
- // FIXME for some reason, we can't use goog.abstractMethod here
- goog.asserts.fail();
- return null;
+ol.View.prototype.getProjection = function() {
+ return /** @type {ol.proj.Projection|undefined} */ (
+ this.get(ol.ViewProperty.PROJECTION));
+};
+goog.exportProperty(
+ ol.View.prototype,
+ 'getProjection',
+ ol.View.prototype.getProjection);
+
+
+/**
+ * @return {number|undefined} The resolution of the view.
+ * @todo observable
+ * @todo api
+ */
+ol.View.prototype.getResolution = function() {
+ return /** @type {number|undefined} */ (
+ this.get(ol.ViewProperty.RESOLUTION));
+};
+goog.exportProperty(
+ ol.View.prototype,
+ 'getResolution',
+ ol.View.prototype.getResolution);
+
+
+/**
+ * Get the resolution for a provided extent (in map units) and size (in pixels).
+ * @param {ol.Extent} extent Extent.
+ * @param {ol.Size} size Box pixel size.
+ * @return {number} The resolution at which the provided extent will render at
+ * the given size.
+ * @todo api
+ */
+ol.View.prototype.getResolutionForExtent = function(extent, size) {
+ var xResolution = ol.extent.getWidth(extent) / size[0];
+ var yResolution = ol.extent.getHeight(extent) / size[1];
+ return Math.max(xResolution, yResolution);
};
/**
- * @inheritDoc
+ * Return a function that returns a value between 0 and 1 for a
+ * resolution. Exponential scaling is assumed.
+ * @param {number=} opt_power Power.
+ * @return {function(number): number} Resolution for value function.
+ */
+ol.View.prototype.getResolutionForValueFunction = function(opt_power) {
+ var power = opt_power || 2;
+ var maxResolution = this.maxResolution_;
+ var minResolution = this.minResolution_;
+ var max = Math.log(maxResolution / minResolution) / Math.log(power);
+ return (
+ /**
+ * @param {number} value Value.
+ * @return {number} Resolution.
+ */
+ function(value) {
+ var resolution = maxResolution / Math.pow(power, value * max);
+ goog.asserts.assert(resolution >= minResolution &&
+ resolution <= maxResolution);
+ return resolution;
+ });
+};
+
+
+/**
+ * @return {number|undefined} The rotation of the view.
+ * @todo observable
+ * @todo api
+ */
+ol.View.prototype.getRotation = function() {
+ return /** @type {number|undefined} */ (this.get(ol.ViewProperty.ROTATION));
+};
+goog.exportProperty(
+ ol.View.prototype,
+ 'getRotation',
+ ol.View.prototype.getRotation);
+
+
+/**
+ * Return a function that returns a resolution for a value between
+ * 0 and 1. Exponential scaling is assumed.
+ * @param {number=} opt_power Power.
+ * @return {function(number): number} Value for resolution function.
+ */
+ol.View.prototype.getValueForResolutionFunction = function(opt_power) {
+ var power = opt_power || 2;
+ var maxResolution = this.maxResolution_;
+ var minResolution = this.minResolution_;
+ var max = Math.log(maxResolution / minResolution) / Math.log(power);
+ return (
+ /**
+ * @param {number} resolution Resolution.
+ * @return {number} Value.
+ */
+ function(resolution) {
+ var value =
+ (Math.log(maxResolution / resolution) / Math.log(power)) / max;
+ goog.asserts.assert(value >= 0 && value <= 1);
+ return value;
+ });
+};
+
+
+/**
+ * @return {olx.ViewState} View state.
+ */
+ol.View.prototype.getState = function() {
+ goog.asserts.assert(this.isDef());
+ var center = /** @type {ol.Coordinate} */ (this.getCenter());
+ var projection = this.getProjection();
+ var resolution = /** @type {number} */ (this.getResolution());
+ var rotation = this.getRotation();
+ return /** @type {olx.ViewState} */ ({
+ center: center.slice(),
+ projection: goog.isDef(projection) ? projection : null,
+ resolution: resolution,
+ rotation: goog.isDef(rotation) ? rotation : 0
+ });
+};
+
+
+/**
+ * Get the current zoom level. Return undefined if the current
+ * resolution is undefined or not a "constrained resolution".
+ * @return {number|undefined} Zoom.
+ * @todo api
+ */
+ol.View.prototype.getZoom = function() {
+ var offset;
+ var resolution = this.getResolution();
+
+ if (goog.isDef(resolution)) {
+ var res, z = 0;
+ do {
+ res = this.constrainResolution(this.maxResolution_, z);
+ if (res == resolution) {
+ offset = z;
+ break;
+ }
+ ++z;
+ } while (res > this.minResolution_);
+ }
+
+ return goog.isDef(offset) ? this.minZoom_ + offset : offset;
+};
+
+
+/**
+ * Fit the given extent based on the given map size.
+ * @param {ol.Extent} extent Extent.
+ * @param {ol.Size} size Box pixel size.
+ * @todo api
+ */
+ol.View.prototype.fitExtent = function(extent, size) {
+ if (!ol.extent.isEmpty(extent)) {
+ this.setCenter(ol.extent.getCenter(extent));
+ var resolution = this.getResolutionForExtent(extent, size);
+ var constrainedResolution = this.constrainResolution(resolution, 0, 0);
+ if (constrainedResolution < resolution) {
+ constrainedResolution =
+ this.constrainResolution(constrainedResolution, -1, 0);
+ }
+ this.setResolution(constrainedResolution);
+ }
+};
+
+
+/**
+ * Fit the given geometry based on the given map size and border.
+ * Take care on the map angle.
+ * @param {ol.geom.SimpleGeometry} geometry Geometry.
+ * @param {ol.Size} size Box pixel size.
+ * @param {olx.View.fitGeometryOptions=} opt_options Options.
+ * @todo api
+ */
+ol.View.prototype.fitGeometry = function(geometry, size, opt_options) {
+ var options = goog.isDef(opt_options) ? opt_options : {};
+
+ var padding = goog.isDef(options.padding) ? options.padding : [0, 0, 0, 0];
+ var constrainResolution = goog.isDef(options.constrainResolution) ?
+ options.constrainResolution : true;
+ var nearest = goog.isDef(options.nearest) ? options.nearest : false;
+ var minResolution = goog.isDef(options.minResolution) ?
+ options.minResolution : 0;
+ var coords = geometry.getFlatCoordinates();
+
+ // calculate rotated extent
+ var rotation = this.getRotation();
+ goog.asserts.assert(goog.isDef(rotation));
+ var cosAngle = Math.cos(-rotation);
+ var sinAngle = Math.sin(-rotation);
+ var minRotX = +Infinity;
+ var minRotY = +Infinity;
+ var maxRotX = -Infinity;
+ var maxRotY = -Infinity;
+ var stride = geometry.getStride();
+ for (var i = 0, ii = coords.length; i < ii; i += stride) {
+ var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;
+ var rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;
+ minRotX = Math.min(minRotX, rotX);
+ minRotY = Math.min(minRotY, rotY);
+ maxRotX = Math.max(maxRotX, rotX);
+ maxRotY = Math.max(maxRotY, rotY);
+ }
+
+ // calculate resolution
+ var resolution = this.getResolutionForExtent(
+ [minRotX, minRotY, maxRotX, maxRotY],
+ [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);
+ resolution = isNaN(resolution) ? minResolution :
+ Math.max(resolution, minResolution);
+ if (constrainResolution) {
+ var constrainedResolution = this.constrainResolution(resolution, 0, 0);
+ if (!nearest && constrainedResolution < resolution) {
+ constrainedResolution = this.constrainResolution(
+ constrainedResolution, -1, 0);
+ }
+ resolution = constrainedResolution;
+ }
+ this.setResolution(resolution);
+
+ // calculate center
+ sinAngle = -sinAngle; // go back to original rotation
+ var centerRotX = (minRotX + maxRotX) / 2;
+ var centerRotY = (minRotY + maxRotY) / 2;
+ centerRotX += (padding[1] - padding[3]) / 2 * resolution;
+ centerRotY += (padding[0] - padding[2]) / 2 * resolution;
+ var centerX = centerRotX * cosAngle - centerRotY * sinAngle;
+ var centerY = centerRotY * cosAngle + centerRotX * sinAngle;
+
+ this.setCenter([centerX, centerY]);
+};
+
+
+/**
+ * Center on coordinate and view position.
+ * Take care on the map angle.
+ * @param {ol.Coordinate} coordinate Coordinate.
+ * @param {ol.Size} size Box pixel size.
+ * @param {ol.Pixel} position Position on the view to center on.
+ * @todo api
+ */
+ol.View.prototype.centerOn = function(coordinate, size, position) {
+ // calculate rotated position
+ var rotation = this.getRotation();
+ var cosAngle = Math.cos(-rotation);
+ var sinAngle = Math.sin(-rotation);
+ var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;
+ var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;
+ var resolution = this.getResolution();
+ rotX += (size[0] / 2 - position[0]) * resolution;
+ rotY += (position[1] - size[1] / 2) * resolution;
+
+ // go back to original angle
+ sinAngle = -sinAngle; // go back to original rotation
+ var centerX = rotX * cosAngle - rotY * sinAngle;
+ var centerY = rotY * cosAngle + rotX * sinAngle;
+
+ this.setCenter([centerX, centerY]);
+};
+
+
+/**
+ * @return {boolean} Is defined.
*/
ol.View.prototype.isDef = function() {
- // FIXME for some reason, we can't use goog.abstractMethod here
- goog.asserts.fail();
- return false;
+ return goog.isDefAndNotNull(this.getCenter()) &&
+ goog.isDef(this.getResolution());
};
+/**
+ * Rotate the view around a given coordinate.
+ * @param {number} rotation New rotation value for the view.
+ * @param {ol.Coordinate=} opt_anchor The rotation center.
+ * @todo api
+ */
+ol.View.prototype.rotate = function(rotation, opt_anchor) {
+ if (goog.isDef(opt_anchor)) {
+ var center = this.calculateCenterRotate(rotation, opt_anchor);
+ this.setCenter(center);
+ }
+ this.setRotation(rotation);
+};
+
+
+/**
+ * Set the center of the current view.
+ * @param {ol.Coordinate|undefined} center The center of the view.
+ * @todo observable
+ * @todo api
+ */
+ol.View.prototype.setCenter = function(center) {
+ this.set(ol.ViewProperty.CENTER, center);
+};
+goog.exportProperty(
+ ol.View.prototype,
+ 'setCenter',
+ ol.View.prototype.setCenter);
+
+
/**
* @param {ol.ViewHint} hint Hint.
* @param {number} delta Delta.
@@ -95,3 +592,183 @@ ol.View.prototype.setHint = function(hint, delta) {
goog.asserts.assert(this.hints_[hint] >= 0);
return this.hints_[hint];
};
+
+
+/**
+ * Set the projection of this view.
+ * Warning! This code is not yet implemented. Function should not be used.
+ * @param {ol.proj.Projection|undefined} projection The projection of the view.
+ * @todo observable
+ * @todo api
+ */
+ol.View.prototype.setProjection = function(projection) {
+ this.set(ol.ViewProperty.PROJECTION, projection);
+};
+goog.exportProperty(
+ ol.View.prototype,
+ 'setProjection',
+ ol.View.prototype.setProjection);
+
+
+/**
+ * Set the resolution for this view.
+ * @param {number|undefined} resolution The resolution of the view.
+ * @todo observable
+ * @todo api
+ */
+ol.View.prototype.setResolution = function(resolution) {
+ this.set(ol.ViewProperty.RESOLUTION, resolution);
+};
+goog.exportProperty(
+ ol.View.prototype,
+ 'setResolution',
+ ol.View.prototype.setResolution);
+
+
+/**
+ * Set the rotation for this view.
+ * @param {number|undefined} rotation The rotation of the view.
+ * @todo observable
+ * @todo api
+ */
+ol.View.prototype.setRotation = function(rotation) {
+ this.set(ol.ViewProperty.ROTATION, rotation);
+};
+goog.exportProperty(
+ ol.View.prototype,
+ 'setRotation',
+ ol.View.prototype.setRotation);
+
+
+/**
+ * Zoom to a specific zoom level.
+ * @param {number} zoom Zoom level.
+ * @todo api
+ */
+ol.View.prototype.setZoom = function(zoom) {
+ var resolution = this.constrainResolution(
+ this.maxResolution_, zoom - this.minZoom_, 0);
+ this.setResolution(resolution);
+};
+
+
+/**
+ * @param {olx.ViewOptions} options View options.
+ * @private
+ * @return {ol.CenterConstraintType}
+ */
+ol.View.createCenterConstraint_ = function(options) {
+ if (goog.isDef(options.extent)) {
+ return ol.CenterConstraint.createExtent(options.extent);
+ } else {
+ return ol.CenterConstraint.none;
+ }
+};
+
+
+/**
+ * @private
+ * @param {olx.ViewOptions} options View options.
+ * @return {{constraint: ol.ResolutionConstraintType, maxResolution: number,
+ * minResolution: number}}
+ */
+ol.View.createResolutionConstraint_ = function(options) {
+ var resolutionConstraint;
+ var maxResolution;
+ var minResolution;
+
+ // TODO: move these to be ol constants
+ // see https://github.com/openlayers/ol3/issues/2076
+ var defaultMaxZoom = 28;
+ var defaultZoomFactor = 2;
+
+ var minZoom = goog.isDef(options.minZoom) ?
+ options.minZoom : ol.DEFAULT_MIN_ZOOM;
+
+ var maxZoom = goog.isDef(options.maxZoom) ?
+ options.maxZoom : defaultMaxZoom;
+
+ var zoomFactor = goog.isDef(options.zoomFactor) ?
+ options.zoomFactor : defaultZoomFactor;
+
+ if (goog.isDef(options.resolutions)) {
+ var resolutions = options.resolutions;
+ maxResolution = resolutions[0];
+ minResolution = resolutions[resolutions.length - 1];
+ resolutionConstraint = ol.ResolutionConstraint.createSnapToResolutions(
+ resolutions);
+ } else {
+ // calculate the default min and max resolution
+ var projection = options.projection;
+ var extent = ol.proj.createProjection(projection, 'EPSG:3857').getExtent();
+ var size = goog.isNull(extent) ?
+ // use an extent that can fit the whole world if need be
+ 360 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] /
+ ol.proj.METERS_PER_UNIT[projection.getUnits()] :
+ Math.max(ol.extent.getWidth(extent), ol.extent.getHeight(extent));
+
+ var defaultMaxResolution = size / ol.DEFAULT_TILE_SIZE / Math.pow(
+ defaultZoomFactor, ol.DEFAULT_MIN_ZOOM);
+
+ var defaultMinResolution = defaultMaxResolution / Math.pow(
+ defaultZoomFactor, defaultMaxZoom - ol.DEFAULT_MIN_ZOOM);
+
+ // user provided maxResolution takes precedence
+ maxResolution = options.maxResolution;
+ if (goog.isDef(maxResolution)) {
+ minZoom = 0;
+ } else {
+ maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);
+ }
+
+ // user provided minResolution takes precedence
+ minResolution = options.minResolution;
+ if (!goog.isDef(minResolution)) {
+ if (goog.isDef(options.maxZoom)) {
+ if (goog.isDef(options.maxResolution)) {
+ minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);
+ } else {
+ minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);
+ }
+ } else {
+ minResolution = defaultMinResolution;
+ }
+ }
+
+ // given discrete zoom levels, minResolution may be different than provided
+ maxZoom = minZoom + Math.floor(
+ Math.log(maxResolution / minResolution) / Math.log(zoomFactor));
+ minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);
+
+ resolutionConstraint = ol.ResolutionConstraint.createSnapToPower(
+ zoomFactor, maxResolution, maxZoom - minZoom);
+ }
+ return {constraint: resolutionConstraint, maxResolution: maxResolution,
+ minResolution: minResolution, minZoom: minZoom};
+};
+
+
+/**
+ * @private
+ * @param {olx.ViewOptions} options View options.
+ * @return {ol.RotationConstraintType} Rotation constraint.
+ */
+ol.View.createRotationConstraint_ = function(options) {
+ var enableRotation = goog.isDef(options.enableRotation) ?
+ options.enableRotation : true;
+ if (enableRotation) {
+ var constrainRotation = options.constrainRotation;
+ if (!goog.isDef(constrainRotation) || constrainRotation === true) {
+ return ol.RotationConstraint.createSnapToZero();
+ } else if (constrainRotation === false) {
+ return ol.RotationConstraint.none;
+ } else if (goog.isNumber(constrainRotation)) {
+ return ol.RotationConstraint.createSnapToN(constrainRotation);
+ } else {
+ goog.asserts.fail();
+ return ol.RotationConstraint.none;
+ }
+ } else {
+ return ol.RotationConstraint.disable;
+ }
+};
diff --git a/src/ol/view2d.js b/src/ol/view2d.js
deleted file mode 100644
index 764da58aed..0000000000
--- a/src/ol/view2d.js
+++ /dev/null
@@ -1,759 +0,0 @@
-// FIXME getView3D has not return type
-
-goog.provide('ol.View2D');
-goog.provide('ol.View2DProperty');
-
-goog.require('goog.asserts');
-goog.require('ol');
-goog.require('ol.CenterConstraint');
-goog.require('ol.Constraints');
-goog.require('ol.IView2D');
-goog.require('ol.IView3D');
-goog.require('ol.ResolutionConstraint');
-goog.require('ol.RotationConstraint');
-goog.require('ol.RotationConstraintType');
-goog.require('ol.Size');
-goog.require('ol.View');
-goog.require('ol.coordinate');
-goog.require('ol.extent');
-goog.require('ol.proj');
-goog.require('ol.proj.METERS_PER_UNIT');
-goog.require('ol.proj.Projection');
-goog.require('ol.proj.Units');
-
-
-/**
- * @enum {string}
- */
-ol.View2DProperty = {
- CENTER: 'center',
- PROJECTION: 'projection',
- RESOLUTION: 'resolution',
- ROTATION: 'rotation'
-};
-
-
-
-/**
- * @classdesc
- * An ol.View2D object represents a simple 2D view of the map.
- *
- * This is the object to act upon to change the center, resolution,
- * and rotation of the map.
- *
- * ### The view states
- *
- * An `ol.View2D` is determined by three states: `center`, `resolution`,
- * and `rotation`. To each state corresponds a getter and a setter. E.g.
- * `getCenter` and `setCenter` for the `center` state.
- *
- * An `ol.View2D` has a `projection`. The projection determines the
- * coordinate system of the center, and its units determine the units of the
- * resolution (projection units per pixel). The default projection is
- * Spherical Mercator (EPSG:3857).
- *
- * ### The constraints
- *
- * `setCenter`, `setResolution` and `setRotation` can be used to change the
- * states of the view. Any value can be passed to the setters. And the value
- * that is passed to a setter will effectively be the value set in the view,
- * and returned by the corresponding getter.
- *
- * But an `ol.View2D` object also has a *resolution constraint*, a
- * *rotation constraint* and a *center constraint*.
- *
- * As said above no constraints are applied when the setters are used to set
- * new states for the view. Applying constraints is done explicitly through
- * the use of the `constrain*` functions (`constrainResolution` and
- * `constrainRotation` and `constrainCenter`).
- *
- * The main users of the constraints are the interactions and the
- * controls. For example, double-clicking on the map changes the view to
- * the "next" resolution. And releasing the fingers after pinch-zooming
- * snaps to the closest resolution (with an animation).
- *
- * So the *resolution constraint* snaps to specific resolutions. It is
- * determined by the following options: `resolutions`, `maxResolution`,
- * `maxZoom`, and `zoomFactor`. If `resolutions` is set, the other three
- * options are ignored. See {@link ol.View2DOptions} for more information.
- *
- * The *rotation constaint* is currently not configurable. It snaps the
- * rotation value to zero when approaching the horizontal.
- *
- * @constructor
- * @implements {ol.IView2D}
- * @implements {ol.IView3D}
- * @extends {ol.View}
- * @param {olx.View2DOptions=} opt_options View2D options.
- * @todo api
- */
-ol.View2D = function(opt_options) {
- goog.base(this);
- var options = goog.isDef(opt_options) ? opt_options : {};
-
- /**
- * @type {Object.}
- */
- var values = {};
- values[ol.View2DProperty.CENTER] = goog.isDef(options.center) ?
- options.center : null;
- values[ol.View2DProperty.PROJECTION] = ol.proj.createProjection(
- options.projection, 'EPSG:3857');
-
- var resolutionConstraintInfo = ol.View2D.createResolutionConstraint_(
- options);
-
- /**
- * @private
- * @type {number}
- */
- this.maxResolution_ = resolutionConstraintInfo.maxResolution;
-
- /**
- * @private
- * @type {number}
- */
- this.minResolution_ = resolutionConstraintInfo.minResolution;
-
- /**
- * @private
- * @type {number}
- */
- this.minZoom_ = resolutionConstraintInfo.minZoom;
-
- var centerConstraint = ol.View2D.createCenterConstraint_(options);
- var resolutionConstraint = resolutionConstraintInfo.constraint;
- var rotationConstraint = ol.View2D.createRotationConstraint_(options);
-
- /**
- * @private
- * @type {ol.Constraints}
- */
- this.constraints_ = new ol.Constraints(
- centerConstraint, resolutionConstraint, rotationConstraint);
-
- if (goog.isDef(options.resolution)) {
- values[ol.View2DProperty.RESOLUTION] = options.resolution;
- } else if (goog.isDef(options.zoom)) {
- values[ol.View2DProperty.RESOLUTION] = this.constrainResolution(
- this.maxResolution_, options.zoom - this.minZoom_);
- }
- values[ol.View2DProperty.ROTATION] =
- goog.isDef(options.rotation) ? options.rotation : 0;
- this.setValues(values);
-};
-goog.inherits(ol.View2D, ol.View);
-
-
-/**
- * @param {number} rotation Target rotation.
- * @param {ol.Coordinate} anchor Rotation anchor.
- * @return {ol.Coordinate|undefined} Center for rotation and anchor.
- */
-ol.View2D.prototype.calculateCenterRotate = function(rotation, anchor) {
- var center;
- var currentCenter = this.getCenter();
- if (goog.isDef(currentCenter)) {
- center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];
- ol.coordinate.rotate(center, rotation - this.getRotation());
- ol.coordinate.add(center, anchor);
- }
- return center;
-};
-
-
-/**
- * @param {number} resolution Target resolution.
- * @param {ol.Coordinate} anchor Zoom anchor.
- * @return {ol.Coordinate|undefined} Center for resolution and anchor.
- */
-ol.View2D.prototype.calculateCenterZoom = function(resolution, anchor) {
- var center;
- var currentCenter = this.getCenter();
- var currentResolution = this.getResolution();
- if (goog.isDef(currentCenter) && goog.isDef(currentResolution)) {
- var x = anchor[0] -
- resolution * (anchor[0] - currentCenter[0]) / currentResolution;
- var y = anchor[1] -
- resolution * (anchor[1] - currentCenter[1]) / currentResolution;
- center = [x, y];
- }
- return center;
-};
-
-
-/**
- * Get the constrained center of this view.
- * @param {ol.Coordinate|undefined} center Center.
- * @return {ol.Coordinate|undefined} Constrained center.
- * @todo api
- */
-ol.View2D.prototype.constrainCenter = function(center) {
- return this.constraints_.center(center);
-};
-
-
-/**
- * Get the constrained resolution of this view.
- * @param {number|undefined} resolution Resolution.
- * @param {number=} opt_delta Delta. Default is `0`.
- * @param {number=} opt_direction Direction. Default is `0`.
- * @return {number|undefined} Constrained resolution.
- * @todo api
- */
-ol.View2D.prototype.constrainResolution = function(
- resolution, opt_delta, opt_direction) {
- var delta = opt_delta || 0;
- var direction = opt_direction || 0;
- return this.constraints_.resolution(resolution, delta, direction);
-};
-
-
-/**
- * Get the constrained rotation of this view.
- * @param {number|undefined} rotation Rotation.
- * @param {number=} opt_delta Delta. Default is `0`.
- * @return {number|undefined} Constrained rotation.
- * @todo api
- */
-ol.View2D.prototype.constrainRotation = function(rotation, opt_delta) {
- var delta = opt_delta || 0;
- return this.constraints_.rotation(rotation, delta);
-};
-
-
-/**
- * @inheritDoc
- * @todo observable
- * @todo api
- */
-ol.View2D.prototype.getCenter = function() {
- return /** @type {ol.Coordinate|undefined} */ (
- this.get(ol.View2DProperty.CENTER));
-};
-goog.exportProperty(
- ol.View2D.prototype,
- 'getCenter',
- ol.View2D.prototype.getCenter);
-
-
-/**
- * Calculate the extent for the given size in pixels, based on the current
- * resolution and the current center.
- * @param {ol.Size} size Box pixel size.
- * @return {ol.Extent} Extent.
- * @todo api
- */
-ol.View2D.prototype.calculateExtent = function(size) {
- goog.asserts.assert(this.isDef());
- var center = this.getCenter();
- var resolution = this.getResolution();
- var minX = center[0] - resolution * size[0] / 2;
- var maxX = center[0] + resolution * size[0] / 2;
- var minY = center[1] - resolution * size[1] / 2;
- var maxY = center[1] + resolution * size[1] / 2;
- return [minX, minY, maxX, maxY];
-};
-
-
-/**
- * @inheritDoc
- * @todo observable
- * @todo api
- */
-ol.View2D.prototype.getProjection = function() {
- return /** @type {ol.proj.Projection|undefined} */ (
- this.get(ol.View2DProperty.PROJECTION));
-};
-goog.exportProperty(
- ol.View2D.prototype,
- 'getProjection',
- ol.View2D.prototype.getProjection);
-
-
-/**
- * @inheritDoc
- * @todo observable
- * @todo api
- */
-ol.View2D.prototype.getResolution = function() {
- return /** @type {number|undefined} */ (
- this.get(ol.View2DProperty.RESOLUTION));
-};
-goog.exportProperty(
- ol.View2D.prototype,
- 'getResolution',
- ol.View2D.prototype.getResolution);
-
-
-/**
- * Get the resolution for a provided extent (in map units) and size (in pixels).
- * @param {ol.Extent} extent Extent.
- * @param {ol.Size} size Box pixel size.
- * @return {number} The resolution at which the provided extent will render at
- * the given size.
- * @todo api
- */
-ol.View2D.prototype.getResolutionForExtent = function(extent, size) {
- var xResolution = ol.extent.getWidth(extent) / size[0];
- var yResolution = ol.extent.getHeight(extent) / size[1];
- return Math.max(xResolution, yResolution);
-};
-
-
-/**
- * Return a function that returns a value between 0 and 1 for a
- * resolution. Exponential scaling is assumed.
- * @param {number=} opt_power Power.
- * @return {function(number): number} Resolution for value function.
- */
-ol.View2D.prototype.getResolutionForValueFunction = function(opt_power) {
- var power = opt_power || 2;
- var maxResolution = this.maxResolution_;
- var minResolution = this.minResolution_;
- var max = Math.log(maxResolution / minResolution) / Math.log(power);
- return (
- /**
- * @param {number} value Value.
- * @return {number} Resolution.
- */
- function(value) {
- var resolution = maxResolution / Math.pow(power, value * max);
- goog.asserts.assert(resolution >= minResolution &&
- resolution <= maxResolution);
- return resolution;
- });
-};
-
-
-/**
- * @inheritDoc
- * @todo observable
- * @todo api
- */
-ol.View2D.prototype.getRotation = function() {
- return /** @type {number|undefined} */ (this.get(ol.View2DProperty.ROTATION));
-};
-goog.exportProperty(
- ol.View2D.prototype,
- 'getRotation',
- ol.View2D.prototype.getRotation);
-
-
-/**
- * Return a function that returns a resolution for a value between
- * 0 and 1. Exponential scaling is assumed.
- * @param {number=} opt_power Power.
- * @return {function(number): number} Value for resolution function.
- */
-ol.View2D.prototype.getValueForResolutionFunction = function(opt_power) {
- var power = opt_power || 2;
- var maxResolution = this.maxResolution_;
- var minResolution = this.minResolution_;
- var max = Math.log(maxResolution / minResolution) / Math.log(power);
- return (
- /**
- * @param {number} resolution Resolution.
- * @return {number} Value.
- */
- function(resolution) {
- var value =
- (Math.log(maxResolution / resolution) / Math.log(power)) / max;
- goog.asserts.assert(value >= 0 && value <= 1);
- return value;
- });
-};
-
-
-/**
- * @inheritDoc
- * @todo api
- */
-ol.View2D.prototype.getView2D = function() {
- return this;
-};
-
-
-/**
- * @inheritDoc
- */
-ol.View2D.prototype.getView2DState = function() {
- goog.asserts.assert(this.isDef());
- var center = /** @type {ol.Coordinate} */ (this.getCenter());
- var projection = this.getProjection();
- var resolution = /** @type {number} */ (this.getResolution());
- var rotation = this.getRotation();
- return /** @type {olx.View2DState} */ ({
- center: center.slice(),
- projection: goog.isDef(projection) ? projection : null,
- resolution: resolution,
- rotation: goog.isDef(rotation) ? rotation : 0
- });
-};
-
-
-/**
- * FIXME return type
- */
-ol.View2D.prototype.getView3D = function() {
-};
-
-
-/**
- * Get the current zoom level. Return undefined if the current
- * resolution is undefined or not a "constrained resolution".
- * @return {number|undefined} Zoom.
- * @todo api
- */
-ol.View2D.prototype.getZoom = function() {
- var offset;
- var resolution = this.getResolution();
-
- if (goog.isDef(resolution)) {
- var res, z = 0;
- do {
- res = this.constrainResolution(this.maxResolution_, z);
- if (res == resolution) {
- offset = z;
- break;
- }
- ++z;
- } while (res > this.minResolution_);
- }
-
- return goog.isDef(offset) ? this.minZoom_ + offset : offset;
-};
-
-
-/**
- * Fit the given extent based on the given map size.
- * @param {ol.Extent} extent Extent.
- * @param {ol.Size} size Box pixel size.
- * @todo api
- */
-ol.View2D.prototype.fitExtent = function(extent, size) {
- if (!ol.extent.isEmpty(extent)) {
- this.setCenter(ol.extent.getCenter(extent));
- var resolution = this.getResolutionForExtent(extent, size);
- var constrainedResolution = this.constrainResolution(resolution, 0, 0);
- if (constrainedResolution < resolution) {
- constrainedResolution =
- this.constrainResolution(constrainedResolution, -1, 0);
- }
- this.setResolution(constrainedResolution);
- }
-};
-
-
-/**
- * Fit the given geometry based on the given map size and border.
- * Take care on the map angle.
- * @param {ol.geom.SimpleGeometry} geometry Geometry.
- * @param {ol.Size} size Box pixel size.
- * @param {olx.View2D.fitGeometryOptions=} opt_options Options.
- * @todo api
- */
-ol.View2D.prototype.fitGeometry = function(geometry, size, opt_options) {
- var options = goog.isDef(opt_options) ? opt_options : {};
-
- var padding = goog.isDef(options.padding) ? options.padding : [0, 0, 0, 0];
- var constrainResolution = goog.isDef(options.constrainResolution) ?
- options.constrainResolution : true;
- var nearest = goog.isDef(options.nearest) ? options.nearest : false;
- var minResolution = goog.isDef(options.minResolution) ?
- options.minResolution : 0;
- var coords = geometry.getFlatCoordinates();
-
- // calculate rotated extent
- var rotation = this.getRotation();
- goog.asserts.assert(goog.isDef(rotation));
- var cosAngle = Math.cos(-rotation);
- var sinAngle = Math.sin(-rotation);
- var minRotX = +Infinity;
- var minRotY = +Infinity;
- var maxRotX = -Infinity;
- var maxRotY = -Infinity;
- var stride = geometry.getStride();
- for (var i = 0, ii = coords.length; i < ii; i += stride) {
- var rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;
- var rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;
- minRotX = Math.min(minRotX, rotX);
- minRotY = Math.min(minRotY, rotY);
- maxRotX = Math.max(maxRotX, rotX);
- maxRotY = Math.max(maxRotY, rotY);
- }
-
- // calculate resolution
- var resolution = this.getResolutionForExtent(
- [minRotX, minRotY, maxRotX, maxRotY],
- [size[0] - padding[1] - padding[3], size[1] - padding[0] - padding[2]]);
- resolution = isNaN(resolution) ? minResolution :
- Math.max(resolution, minResolution);
- if (constrainResolution) {
- var constrainedResolution = this.constrainResolution(resolution, 0, 0);
- if (!nearest && constrainedResolution < resolution) {
- constrainedResolution = this.constrainResolution(
- constrainedResolution, -1, 0);
- }
- resolution = constrainedResolution;
- }
- this.setResolution(resolution);
-
- // calculate center
- sinAngle = -sinAngle; // go back to original rotation
- var centerRotX = (minRotX + maxRotX) / 2;
- var centerRotY = (minRotY + maxRotY) / 2;
- centerRotX += (padding[1] - padding[3]) / 2 * resolution;
- centerRotY += (padding[0] - padding[2]) / 2 * resolution;
- var centerX = centerRotX * cosAngle - centerRotY * sinAngle;
- var centerY = centerRotY * cosAngle + centerRotX * sinAngle;
-
- this.setCenter([centerX, centerY]);
-};
-
-
-/**
- * Center on coordinate and view position.
- * Take care on the map angle.
- * @param {ol.Coordinate} coordinate Coordinate.
- * @param {ol.Size} size Box pixel size.
- * @param {ol.Pixel} position Position on the view to center on.
- * @todo api
- */
-ol.View2D.prototype.centerOn = function(coordinate, size, position) {
- // calculate rotated position
- var rotation = this.getRotation();
- var cosAngle = Math.cos(-rotation);
- var sinAngle = Math.sin(-rotation);
- var rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;
- var rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;
- var resolution = this.getResolution();
- rotX += (size[0] / 2 - position[0]) * resolution;
- rotY += (position[1] - size[1] / 2) * resolution;
-
- // go back to original angle
- sinAngle = -sinAngle; // go back to original rotation
- var centerX = rotX * cosAngle - rotY * sinAngle;
- var centerY = rotY * cosAngle + rotX * sinAngle;
-
- this.setCenter([centerX, centerY]);
-};
-
-
-/**
- * @return {boolean} Is defined.
- */
-ol.View2D.prototype.isDef = function() {
- return goog.isDefAndNotNull(this.getCenter()) &&
- goog.isDef(this.getResolution());
-};
-
-
-/**
- * Rotate the view around a given coordinate.
- * @param {number} rotation New rotation value for the view.
- * @param {ol.Coordinate=} opt_anchor The rotation center.
- * @todo api
- */
-ol.View2D.prototype.rotate = function(rotation, opt_anchor) {
- if (goog.isDef(opt_anchor)) {
- var center = this.calculateCenterRotate(rotation, opt_anchor);
- this.setCenter(center);
- }
- this.setRotation(rotation);
-};
-
-
-/**
- * Set the center of the current view.
- * @param {ol.Coordinate|undefined} center The center of the view.
- * @todo observable
- * @todo api
- */
-ol.View2D.prototype.setCenter = function(center) {
- this.set(ol.View2DProperty.CENTER, center);
-};
-goog.exportProperty(
- ol.View2D.prototype,
- 'setCenter',
- ol.View2D.prototype.setCenter);
-
-
-/**
- * Set the projection of this view.
- * Warning! This code is not yet implemented. Function should not be used.
- * @param {ol.proj.Projection|undefined} projection The projection of the view.
- * @todo observable
- * @todo api
- */
-ol.View2D.prototype.setProjection = function(projection) {
- this.set(ol.View2DProperty.PROJECTION, projection);
-};
-goog.exportProperty(
- ol.View2D.prototype,
- 'setProjection',
- ol.View2D.prototype.setProjection);
-
-
-/**
- * Set the resolution for this view.
- * @param {number|undefined} resolution The resolution of the view.
- * @todo observable
- * @todo api
- */
-ol.View2D.prototype.setResolution = function(resolution) {
- this.set(ol.View2DProperty.RESOLUTION, resolution);
-};
-goog.exportProperty(
- ol.View2D.prototype,
- 'setResolution',
- ol.View2D.prototype.setResolution);
-
-
-/**
- * Set the rotation for this view.
- * @param {number|undefined} rotation The rotation of the view.
- * @todo observable
- * @todo api
- */
-ol.View2D.prototype.setRotation = function(rotation) {
- this.set(ol.View2DProperty.ROTATION, rotation);
-};
-goog.exportProperty(
- ol.View2D.prototype,
- 'setRotation',
- ol.View2D.prototype.setRotation);
-
-
-/**
- * Zoom to a specific zoom level.
- * @param {number} zoom Zoom level.
- * @todo api
- */
-ol.View2D.prototype.setZoom = function(zoom) {
- var resolution = this.constrainResolution(
- this.maxResolution_, zoom - this.minZoom_, 0);
- this.setResolution(resolution);
-};
-
-
-/**
- * @param {olx.View2DOptions} options View2D options.
- * @private
- * @return {ol.CenterConstraintType}
- */
-ol.View2D.createCenterConstraint_ = function(options) {
- if (goog.isDef(options.extent)) {
- return ol.CenterConstraint.createExtent(options.extent);
- } else {
- return ol.CenterConstraint.none;
- }
-};
-
-
-/**
- * @private
- * @param {olx.View2DOptions} options View2D options.
- * @return {{constraint: ol.ResolutionConstraintType, maxResolution: number,
- * minResolution: number}}
- */
-ol.View2D.createResolutionConstraint_ = function(options) {
- var resolutionConstraint;
- var maxResolution;
- var minResolution;
-
- // TODO: move these to be ol constants
- // see https://github.com/openlayers/ol3/issues/2076
- var defaultMaxZoom = 28;
- var defaultZoomFactor = 2;
-
- var minZoom = goog.isDef(options.minZoom) ?
- options.minZoom : ol.DEFAULT_MIN_ZOOM;
-
- var maxZoom = goog.isDef(options.maxZoom) ?
- options.maxZoom : defaultMaxZoom;
-
- var zoomFactor = goog.isDef(options.zoomFactor) ?
- options.zoomFactor : defaultZoomFactor;
-
- if (goog.isDef(options.resolutions)) {
- var resolutions = options.resolutions;
- maxResolution = resolutions[0];
- minResolution = resolutions[resolutions.length - 1];
- resolutionConstraint = ol.ResolutionConstraint.createSnapToResolutions(
- resolutions);
- } else {
- // calculate the default min and max resolution
- var projection = options.projection;
- var extent = ol.proj.createProjection(projection, 'EPSG:3857').getExtent();
- var size = goog.isNull(extent) ?
- // use an extent that can fit the whole world if need be
- 360 * ol.proj.METERS_PER_UNIT[ol.proj.Units.DEGREES] /
- ol.proj.METERS_PER_UNIT[projection.getUnits()] :
- Math.max(ol.extent.getWidth(extent), ol.extent.getHeight(extent));
-
- var defaultMaxResolution = size / ol.DEFAULT_TILE_SIZE / Math.pow(
- defaultZoomFactor, ol.DEFAULT_MIN_ZOOM);
-
- var defaultMinResolution = defaultMaxResolution / Math.pow(
- defaultZoomFactor, defaultMaxZoom - ol.DEFAULT_MIN_ZOOM);
-
- // user provided maxResolution takes precedence
- maxResolution = options.maxResolution;
- if (goog.isDef(maxResolution)) {
- minZoom = 0;
- } else {
- maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);
- }
-
- // user provided minResolution takes precedence
- minResolution = options.minResolution;
- if (!goog.isDef(minResolution)) {
- if (goog.isDef(options.maxZoom)) {
- if (goog.isDef(options.maxResolution)) {
- minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);
- } else {
- minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);
- }
- } else {
- minResolution = defaultMinResolution;
- }
- }
-
- // given discrete zoom levels, minResolution may be different than provided
- maxZoom = minZoom + Math.floor(
- Math.log(maxResolution / minResolution) / Math.log(zoomFactor));
- minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);
-
- resolutionConstraint = ol.ResolutionConstraint.createSnapToPower(
- zoomFactor, maxResolution, maxZoom - minZoom);
- }
- return {constraint: resolutionConstraint, maxResolution: maxResolution,
- minResolution: minResolution, minZoom: minZoom};
-};
-
-
-/**
- * @private
- * @param {olx.View2DOptions} options View2D options.
- * @return {ol.RotationConstraintType} Rotation constraint.
- */
-ol.View2D.createRotationConstraint_ = function(options) {
- var enableRotation = goog.isDef(options.enableRotation) ?
- options.enableRotation : true;
- if (enableRotation) {
- var constrainRotation = options.constrainRotation;
- if (!goog.isDef(constrainRotation) || constrainRotation === true) {
- return ol.RotationConstraint.createSnapToZero();
- } else if (constrainRotation === false) {
- return ol.RotationConstraint.none;
- } else if (goog.isNumber(constrainRotation)) {
- return ol.RotationConstraint.createSnapToN(constrainRotation);
- } else {
- goog.asserts.fail();
- return ol.RotationConstraint.none;
- }
- } else {
- return ol.RotationConstraint.disable;
- }
-};
diff --git a/test/spec/ol/extent.test.js b/test/spec/ol/extent.test.js
index 0be6ffa937..a8dfcc5e37 100644
--- a/test/spec/ol/extent.test.js
+++ b/test/spec/ol/extent.test.js
@@ -153,10 +153,10 @@ describe('ol.extent', function() {
});
});
- describe('getForView2DAndSize', function() {
+ describe('getForViewAndSize', function() {
it('works for a unit square', function() {
- var extent = ol.extent.getForView2DAndSize(
+ var extent = ol.extent.getForViewAndSize(
[0, 0], 1, 0, [1, 1]);
expect(extent[0]).to.be(-0.5);
expect(extent[2]).to.be(0.5);
@@ -165,7 +165,7 @@ describe('ol.extent', function() {
});
it('works for center', function() {
- var extent = ol.extent.getForView2DAndSize(
+ var extent = ol.extent.getForViewAndSize(
[5, 10], 1, 0, [1, 1]);
expect(extent[0]).to.be(4.5);
expect(extent[2]).to.be(5.5);
@@ -174,7 +174,7 @@ describe('ol.extent', function() {
});
it('works for rotation', function() {
- var extent = ol.extent.getForView2DAndSize(
+ var extent = ol.extent.getForViewAndSize(
[0, 0], 1, Math.PI / 4, [1, 1]);
expect(extent[0]).to.roughlyEqual(-Math.sqrt(0.5), 1e-9);
expect(extent[2]).to.roughlyEqual(Math.sqrt(0.5), 1e-9);
@@ -183,7 +183,7 @@ describe('ol.extent', function() {
});
it('works for resolution', function() {
- var extent = ol.extent.getForView2DAndSize(
+ var extent = ol.extent.getForViewAndSize(
[0, 0], 2, 0, [1, 1]);
expect(extent[0]).to.be(-1);
expect(extent[2]).to.be(1);
@@ -192,7 +192,7 @@ describe('ol.extent', function() {
});
it('works for size', function() {
- var extent = ol.extent.getForView2DAndSize(
+ var extent = ol.extent.getForViewAndSize(
[0, 0], 1, 0, [10, 5]);
expect(extent[0]).to.be(-5);
expect(extent[2]).to.be(5);
diff --git a/test/spec/ol/interaction/drawinteraction.test.js b/test/spec/ol/interaction/drawinteraction.test.js
index b11b5074d0..3c379698ba 100644
--- a/test/spec/ol/interaction/drawinteraction.test.js
+++ b/test/spec/ol/interaction/drawinteraction.test.js
@@ -20,7 +20,7 @@ describe('ol.interaction.Draw', function() {
map = new ol.Map({
target: target,
layers: [layer],
- view: new ol.View2D({
+ view: new ol.View({
projection: 'EPSG:4326',
center: [0, 0],
resolution: 1
@@ -478,7 +478,7 @@ goog.require('goog.events.BrowserEvent');
goog.require('goog.style');
goog.require('ol.Map');
goog.require('ol.MapBrowserPointerEvent');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.GeometryType');
goog.require('ol.geom.LineString');
goog.require('ol.geom.MultiLineString');
diff --git a/test/spec/ol/map.test.js b/test/spec/ol/map.test.js
index b449d78b4c..727796a3f0 100644
--- a/test/spec/ol/map.test.js
+++ b/test/spec/ol/map.test.js
@@ -63,7 +63,7 @@ describe('ol.Map', function() {
style.height = '180px';
document.body.appendChild(target);
- view = new ol.View2D({
+ view = new ol.View({
projection: 'EPSG:4326'
});
map = new ol.Map({
@@ -117,7 +117,7 @@ describe('ol.Map', function() {
document.body.appendChild(target);
map = new ol.Map({
target: target,
- view: new ol.View2D({
+ view: new ol.View({
projection: 'EPSG:4326',
center: [0, 0],
resolution: 1
@@ -246,7 +246,7 @@ goog.require('goog.dispose');
goog.require('goog.dom');
goog.require('ol.Map');
goog.require('ol.MapEvent');
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.interaction');
goog.require('ol.interaction.Interaction');
goog.require('ol.interaction.DoubleClickZoom');
diff --git a/test/spec/ol/view2d.test.js b/test/spec/ol/view.test.js
similarity index 94%
rename from test/spec/ol/view2d.test.js
rename to test/spec/ol/view.test.js
index b9605b8a37..a1e861f334 100644
--- a/test/spec/ol/view2d.test.js
+++ b/test/spec/ol/view.test.js
@@ -1,6 +1,6 @@
-goog.provide('ol.test.View2D');
+goog.provide('ol.test.View');
-describe('ol.View2D', function() {
+describe('ol.View', function() {
describe('create constraints', function() {
describe('create resolution constraint', function() {
@@ -8,7 +8,7 @@ describe('ol.View2D', function() {
describe('with no options', function() {
it('gives a correct resolution constraint function', function() {
var options = {};
- var fn = ol.View2D.createResolutionConstraint_(options).constraint;
+ var fn = ol.View.createResolutionConstraint_(options).constraint;
expect(fn(156543.03392804097, 0, 0))
.to.roughlyEqual(156543.03392804097, 1e-9);
expect(fn(78271.51696402048, 0, 0))
@@ -24,7 +24,7 @@ describe('ol.View2D', function() {
maxZoom: 3,
zoomFactor: 3
};
- var info = ol.View2D.createResolutionConstraint_(options);
+ var info = ol.View.createResolutionConstraint_(options);
var maxResolution = info.maxResolution;
expect(maxResolution).to.eql(81);
var minResolution = info.minResolution;
@@ -44,7 +44,7 @@ describe('ol.View2D', function() {
var options = {
resolutions: [97, 76, 65, 54, 0.45]
};
- var info = ol.View2D.createResolutionConstraint_(options);
+ var info = ol.View.createResolutionConstraint_(options);
var maxResolution = info.maxResolution;
expect(maxResolution).to.eql(97);
var minResolution = info.minResolution;
@@ -62,7 +62,7 @@ describe('ol.View2D', function() {
var defaultMaxRes = 156543.03392804097;
function getConstraint(options) {
- return ol.View2D.createResolutionConstraint_(options).constraint;
+ return ol.View.createResolutionConstraint_(options).constraint;
}
it('works with only maxZoom', function() {
@@ -129,7 +129,7 @@ describe('ol.View2D', function() {
var defaultMaxRes = 156543.03392804097;
function getConstraint(options) {
- return ol.View2D.createResolutionConstraint_(options).constraint;
+ return ol.View.createResolutionConstraint_(options).constraint;
}
it('works with only maxResolution', function() {
@@ -198,7 +198,7 @@ describe('ol.View2D', function() {
var defaultMaxRes = 156543.03392804097;
function getConstraint(options) {
- return ol.View2D.createResolutionConstraint_(options).constraint;
+ return ol.View.createResolutionConstraint_(options).constraint;
}
it('respects maxResolution over minZoom', function() {
@@ -242,7 +242,7 @@ describe('ol.View2D', function() {
describe('create rotation constraint', function() {
it('gives a correct rotation constraint function', function() {
var options = {};
- var fn = ol.View2D.createRotationConstraint_(options);
+ var fn = ol.View.createRotationConstraint_(options);
expect(fn(0.01, 0)).to.eql(0);
expect(fn(0.15, 0)).to.eql(0.15);
});
@@ -253,7 +253,7 @@ describe('ol.View2D', function() {
describe('#getZoom', function() {
var view;
beforeEach(function() {
- view = new ol.View2D({
+ view = new ol.View({
resolutions: [512, 256, 128, 64, 32, 16]
});
});
@@ -284,7 +284,7 @@ describe('ol.View2D', function() {
describe('#getZoom() - constrained', function() {
it('returns correct zoom levels', function() {
- var view = new ol.View2D({
+ var view = new ol.View({
minZoom: 10,
maxZoom: 20
});
@@ -316,7 +316,7 @@ describe('ol.View2D', function() {
it('respects custom ol.DEFAULT_MIN_ZOOM', function() {
ol.DEFAULT_MIN_ZOOM = 2;
- var view = new ol.View2D();
+ var view = new ol.View();
view.setZoom(1);
expect(view.getZoom()).to.be(2);
@@ -333,7 +333,7 @@ describe('ol.View2D', function() {
it('gives maxResolution precedence over minZoom', function() {
- var view = new ol.View2D({
+ var view = new ol.View({
maxResolution: 100,
minZoom: 2 // this should get ignored
});
@@ -349,7 +349,7 @@ describe('ol.View2D', function() {
describe('fitGeometry', function() {
var view;
beforeEach(function() {
- view = new ol.View2D({
+ view = new ol.View({
resolutions: [200, 100, 50, 20, 10, 5, 2, 1]
});
});
@@ -419,7 +419,7 @@ describe('ol.View2D', function() {
describe('centerOn', function() {
var view;
beforeEach(function() {
- view = new ol.View2D({
+ view = new ol.View({
resolutions: [200, 100, 50, 20, 10, 5, 2, 1]
});
});
@@ -445,6 +445,6 @@ describe('ol.View2D', function() {
});
});
-goog.require('ol.View2D');
+goog.require('ol.View');
goog.require('ol.geom.LineString');
goog.require('ol.geom.Point');
|