diff --git a/examples/all-overlays-google.html b/examples/all-overlays-google.html
new file mode 100644
index 0000000000..cc3e2da038
--- /dev/null
+++ b/examples/all-overlays-google.html
@@ -0,0 +1,29 @@
+
+
+
+ OpenLayers All Overlays with Google and OSM
+
+
+
+
+
+
+
+
+ All Overlays with Google and OSM
+
+ Using the Google and OSM layers as overlays.
+
+
+
+
+ Using the allOverlays property on the map, the first layer added
+ must initially be visible. This example demonstrates the use of
+ a Google layer and an OSM layer treated as overlays.
+
+ See the
+ all-overlays-google.js source to see how this is done.
+
+
+
+
diff --git a/examples/all-overlays-google.js b/examples/all-overlays-google.js
new file mode 100644
index 0000000000..f26d3fc80e
--- /dev/null
+++ b/examples/all-overlays-google.js
@@ -0,0 +1,19 @@
+var map;
+
+function init() {
+
+ map = new OpenLayers.Map({
+ div: "map",
+ allOverlays: true
+ });
+
+ var osm = new OpenLayers.Layer.OSM();
+ var gmap = new OpenLayers.Layer.Google("Google Streets", {visibility: false});
+
+ // note that first layer must be visible
+ map.addLayers([osm, gmap]);
+
+ map.addControl(new OpenLayers.Control.LayerSwitcher());
+ map.zoomToMaxExtent();
+
+}
diff --git a/lib/OpenLayers/Layer/Google/v3.js b/lib/OpenLayers/Layer/Google/v3.js
index 97a59b37cf..0be53f2879 100644
--- a/lib/OpenLayers/Layer/Google/v3.js
+++ b/lib/OpenLayers/Layer/Google/v3.js
@@ -102,8 +102,8 @@ OpenLayers.Layer.Google.v3 = {
OpenLayers.Function.bind(this.repositionMapElements, this)
);
}
-
this.mapObject = mapObject;
+ this.setGMapVisibility(this.visibility);
},
/**
@@ -146,7 +146,7 @@ OpenLayers.Layer.Google.v3 = {
poweredBy.className = "olLayerGooglePoweredBy olLayerGoogleV3 gmnoprint";
poweredBy.style.display = "";
cache.poweredBy = poweredBy;
-
+
this.setGMapVisibility(true);
},
@@ -183,7 +183,7 @@ OpenLayers.Layer.Google.v3 = {
var container = this.mapObject.getDiv();
if (visible === true) {
this.mapObject.setMapTypeId(this.type);
- container.style.display = "";
+ container.style.left = "";
if (cache.termsOfUse && cache.termsOfUse.style) {
cache.termsOfUse.style.left = "";
cache.termsOfUse.style.display = "";
@@ -195,7 +195,7 @@ OpenLayers.Layer.Google.v3 = {
delete cache.displayed;
}
if (!cache.displayed) {
- container.style.display = "none";
+ container.style.left = "-9999px";
if (cache.termsOfUse && cache.termsOfUse.style) {
cache.termsOfUse.style.display = "none";
// move ToU far to the left in addition to setting
diff --git a/tests/Layer/Google/v3.html b/tests/Layer/Google/v3.html
index e29c74aef0..30a2c7a429 100644
--- a/tests/Layer/Google/v3.html
+++ b/tests/Layer/Google/v3.html
@@ -226,7 +226,7 @@
gmap.repositionMapElements = function() {
++called;
original.apply(gmap, arguments);
- }
+ }
gmap.setVisibility(true);
t.delay_call(2, function() {
@@ -235,6 +235,32 @@
});
}
+ function test_allOverlays_invisible(t) {
+
+ t.plan(1);
+
+ var map = new OpenLayers.Map('map', {allOverlays: true});
+
+ var osm = new OpenLayers.Layer.OSM();
+ var gmap = new OpenLayers.Layer.Google("Google Streets", {visibility: false});
+
+ // keep track of last argument to setGMapVisibility
+ var visible;
+ var original = gmap.setGMapVisibility;
+ gmap.setGMapVisibility = function(vis) {
+ visible = vis;
+ original.apply(gmap, arguments);
+ }
+
+ map.addLayers([osm, gmap]);
+ map.zoomToMaxExtent();
+
+ t.ok(visible === false, "setGMapVisibility last called with false");
+
+ map.destroy();
+
+ }
+