To have a functioning map with all overlays, set the map.allOverlays property to true. With all overlays, the map derives projection, resolution, and max extent information from the lowest layer in the draw order (map.layers[0]). To change the layer order, use map.setLayerIndex or map.raiseLayer. r=ahocevar,elemoine (closes #2004)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@9171 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -120,6 +120,22 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
* events on the map
|
||||
*/
|
||||
events: null,
|
||||
|
||||
/**
|
||||
* APIProperty: allOverlays
|
||||
* {Boolean} Allow the map to function with "overlays" only. Defaults to
|
||||
* false. If true, the lowest layer in the draw order will act as
|
||||
* the base layer. In addition, if set to true, all layers will
|
||||
* have isBaseLayer set to false when they are added to the map.
|
||||
*
|
||||
* Note:
|
||||
* If you set map.allOverlays to true, then you *cannot* use
|
||||
* map.setBaseLayer or layer.setIsBaseLayer. With allOverlays true,
|
||||
* the lowest layer in the draw layer is the base layer. So, to change
|
||||
* the base layer, use <setLayerIndex> or <raiseLayer> to set the layer
|
||||
* index to 0.
|
||||
*/
|
||||
allOverlays: false,
|
||||
|
||||
/**
|
||||
* APIProperty: div
|
||||
@@ -878,7 +894,10 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
OpenLayers.Console.warn(msg);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(this.allOverlays) {
|
||||
layer.isBaseLayer = false;
|
||||
}
|
||||
|
||||
this.events.triggerEvent("preaddlayer", {layer: layer});
|
||||
|
||||
@@ -894,7 +913,7 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
this.layers.push(layer);
|
||||
layer.setMap(this);
|
||||
|
||||
if (layer.isBaseLayer) {
|
||||
if (layer.isBaseLayer || (this.allOverlays && !this.baseLayer)) {
|
||||
if (this.baseLayer == null) {
|
||||
// set the first baselaye we add as the baselayer
|
||||
this.setBaseLayer(layer);
|
||||
@@ -968,7 +987,7 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
if(setNewBaseLayer) {
|
||||
for(var i=0, len=this.layers.length; i<len; i++) {
|
||||
var iLayer = this.layers[i];
|
||||
if (iLayer.isBaseLayer) {
|
||||
if (iLayer.isBaseLayer || this.allOverlays) {
|
||||
this.setBaseLayer(iLayer);
|
||||
break;
|
||||
}
|
||||
@@ -1033,6 +1052,13 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
this.events.triggerEvent("changelayer", {
|
||||
layer: layer, property: "order"
|
||||
});
|
||||
if(this.allOverlays) {
|
||||
if(idx === 0) {
|
||||
this.setBaseLayer(layer);
|
||||
} else if(this.baseLayer !== this.layers[0]) {
|
||||
this.setBaseLayer(this.layers[0]);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1644,7 +1670,7 @@ OpenLayers.Map = OpenLayers.Class({
|
||||
|
||||
for (var i=0, len=this.layers.length; i<len; i++) {
|
||||
var layer = this.layers[i];
|
||||
if (!layer.isBaseLayer) {
|
||||
if (layer !== this.baseLayer && !layer.isBaseLayer) {
|
||||
var inRange = layer.calculateInRange();
|
||||
if (layer.inRange != inRange) {
|
||||
// the inRange property has changed. If the layer is
|
||||
|
||||
Reference in New Issue
Block a user