Merge pull request #274 from twpayne/map-layers-api

ol.Collection versus array
This commit is contained in:
Tom Payne
2013-03-06 10:48:48 -08:00
11 changed files with 51 additions and 25 deletions

View File

@@ -1,5 +1,4 @@
goog.require('ol.AnchoredElement');
goog.require('ol.Collection');
goog.require('ol.Coordinate');
goog.require('ol.Map');
goog.require('ol.RendererHints');
@@ -14,7 +13,7 @@ var layer = new ol.layer.TileLayer({
});
var map = new ol.Map({
layers: new ol.Collection([layer]),
layers: [layer],
renderers: ol.RendererHints.createFromQueryData(),
target: 'map',
view: new ol.View2D({

View File

@@ -1,4 +1,3 @@
goog.require('ol.Collection');
goog.require('ol.Coordinate');
goog.require('ol.Map');
goog.require('ol.RendererHint');
@@ -10,7 +9,7 @@ goog.require('ol.source.OpenStreetMap');
goog.require('ol.tilegrid.XYZ');
var layers = new ol.Collection([
var layers = [
new ol.layer.TileLayer({
source: new ol.source.OpenStreetMap()
}),
@@ -22,7 +21,7 @@ var layers = new ol.Collection([
})
})
})
]);
];
var webglMap = new ol.Map({
view: new ol.View2D({

View File

@@ -1,4 +1,3 @@
goog.require('ol.Collection');
goog.require('ol.Coordinate');
goog.require('ol.Map');
goog.require('ol.RendererHint');
@@ -10,7 +9,7 @@ goog.require('ol.projection');
goog.require('ol.source.TiledWMS');
var layers = new ol.Collection([
var layers = [
new ol.layer.TileLayer({
source: new ol.source.TiledWMS({
url: 'http://vmap0.tiles.osgeo.org/wms/vmap0',
@@ -22,7 +21,7 @@ var layers = new ol.Collection([
}
})
})
]);
];
var map = new ol.Map({
controls: ol.control.defaults({

View File

@@ -1,4 +1,3 @@
goog.require('ol.Collection');
goog.require('ol.Coordinate');
goog.require('ol.Map');
goog.require('ol.RendererHints');
@@ -15,7 +14,7 @@ var map = new ol.Map({
controls: ol.control.defaults({
scaleLine: true
}),
layers: new ol.Collection([layer]),
layers: [layer],
renderers: ol.RendererHints.createFromQueryData(),
target: 'map',
view: new ol.View2D({

View File

@@ -1,4 +1,3 @@
goog.require('ol.Collection');
goog.require('ol.Coordinate');
goog.require('ol.Map');
goog.require('ol.RendererHints');
@@ -7,7 +6,7 @@ goog.require('ol.layer.TileLayer');
goog.require('ol.source.Stamen');
var layers = new ol.Collection([
var layers = [
new ol.layer.TileLayer({
source: new ol.source.Stamen({
layer: 'watercolor'
@@ -18,7 +17,7 @@ var layers = new ol.Collection([
layer: 'terrain-labels'
})
})
]);
];
var map = new ol.Map({
layers: layers,
renderers: ol.RendererHints.createFromQueryData(),

View File

@@ -1,4 +1,3 @@
goog.require('ol.Collection');
goog.require('ol.Coordinate');
goog.require('ol.Map');
goog.require('ol.RendererHint');
@@ -9,7 +8,7 @@ goog.require('ol.source.BingMaps');
goog.require('ol.source.TileJSON');
var layers = new ol.Collection([
var layers = [
new ol.layer.TileLayer({
source: new ol.source.BingMaps({
key: 'AgtFlPYDnymLEe9zJ5PCkghbNiFZE9aAtTy3mPaEnEBXqLHtFuTcKoZ-miMC3w7R',
@@ -21,7 +20,7 @@ var layers = new ol.Collection([
uri: 'http://api.tiles.mapbox.com/v3/mapbox.va-quake-aug.jsonp'
})
})
]);
];
var webglMap = new ol.Map({
layers: layers,

View File

@@ -1,5 +1,4 @@
goog.require('ol.Attribution');
goog.require('ol.Collection');
goog.require('ol.Coordinate');
goog.require('ol.Extent');
goog.require('ol.Map');
@@ -20,7 +19,7 @@ var epsg21781 = new ol.Projection('EPSG:21781', ol.ProjectionUnits.METERS,
ol.projection.addProjection(epsg21781);
var extent = new ol.Extent(420000, 30000, 900000, 350000);
var layers = new ol.Collection([
var layers = [
new ol.layer.TileLayer({
source: new ol.source.TiledWMS({
url: 'http://wms.geo.admin.ch/',
@@ -45,7 +44,7 @@ var layers = new ol.Collection([
params: {'LAYERS': 'ch.bafu.schutzgebiete-paerke_nationaler_bedeutung'}
})
})
]);
];
var map = new ol.Map({
layers: layers,

View File

@@ -1,4 +1,3 @@
goog.require('ol.Collection');
goog.require('ol.Coordinate');
goog.require('ol.Extent');
goog.require('ol.Map');
@@ -9,7 +8,7 @@ goog.require('ol.source.MapQuestOpenAerial');
goog.require('ol.source.TiledWMS');
var layers = new ol.Collection([
var layers = [
new ol.layer.TileLayer({
source: new ol.source.MapQuestOpenAerial()
}),
@@ -21,7 +20,7 @@ var layers = new ol.Collection([
extent: new ol.Extent(-13884991, 2870341, -7455066, 6338219)
})
})
]);
];
var map = new ol.Map({
renderer: ol.RendererHint.CANVAS,
layers: layers,

View File

@@ -1,7 +1,7 @@
@exportObjectLiteral ol.MapOptions
@exportObjectLiteralProperty ol.MapOptions.controls Array.<ol.control.Control>|undefined
@exportObjectLiteralProperty ol.MapOptions.interactions ol.Collection|undefined
@exportObjectLiteralProperty ol.MapOptions.layers ol.Collection|undefined
@exportObjectLiteralProperty ol.MapOptions.layers Array.<ol.layer.Layer>|ol.Collection|undefined
@exportObjectLiteralProperty ol.MapOptions.renderer ol.RendererHint|undefined
@exportObjectLiteralProperty ol.MapOptions.renderers Array.<ol.RendererHint>|undefined
@exportObjectLiteralProperty ol.MapOptions.target Element|string

View File

@@ -1,8 +1,10 @@
@exportClass ol.Map ol.MapOptions
@exportProperty ol.Map.prototype.addLayer
@exportProperty ol.Map.prototype.addPreRenderFunction
@exportProperty ol.Map.prototype.addPreRenderFunctions
@exportProperty ol.Map.prototype.getInteractions
@exportProperty ol.Map.prototype.getRenderer
@exportProperty ol.Map.prototype.removeLayer
@exportSymbol ol.RendererHint
@exportProperty ol.RendererHint.CANVAS

View File

@@ -292,6 +292,16 @@ ol.Map = function(mapOptions) {
goog.inherits(ol.Map, ol.Object);
/**
* @param {ol.layer.Layer} layer Layer.
*/
ol.Map.prototype.addLayer = function(layer) {
var layers = this.getLayers();
goog.asserts.assert(goog.isDef(layers));
layers.push(layer);
};
/**
* @param {ol.PreRenderFunction} preRenderFunction Pre-render function.
*/
@@ -619,6 +629,18 @@ ol.Map.prototype.requestRenderFrame = function() {
};
/**
* @param {ol.layer.Layer} layer Layer.
* @return {ol.layer.Layer|undefined} The removed layer or undefined if the
* layer was not found.
*/
ol.Map.prototype.removeLayer = function(layer) {
var layers = this.getLayers();
goog.asserts.assert(goog.isDef(layers));
return /** @type {ol.layer.Layer|undefined} */ (layers.remove(layer));
};
/**
* @param {number} time Time.
* @private
@@ -823,8 +845,18 @@ ol.Map.createOptionsInternal = function(mapOptions) {
*/
var values = {};
values[ol.MapProperty.LAYERS] = goog.isDef(mapOptions.layers) ?
mapOptions.layers : new ol.Collection();
var layers;
if (goog.isDef(mapOptions.layers)) {
if (goog.isArray(mapOptions.layers)) {
layers = new ol.Collection(goog.array.clone(mapOptions.layers));
} else {
goog.asserts.assert(mapOptions.layers instanceof ol.Collection);
layers = mapOptions.layers;
}
} else {
layers = new ol.Collection();
}
values[ol.MapProperty.LAYERS] = layers;
values[ol.MapProperty.VIEW] = goog.isDef(mapOptions.view) ?
mapOptions.view : new ol.View2D();