Merge pull request #791 from ahocevar/google-tilesloaded
Do not add viewport to GMaps object before it is fully rendered. r=@bartvde
This commit is contained in:
@@ -124,9 +124,10 @@ OpenLayers.Layer.Google.v3 = {
|
|||||||
*/
|
*/
|
||||||
setGMapVisibility: function(visible) {
|
setGMapVisibility: function(visible) {
|
||||||
var cache = OpenLayers.Layer.Google.cache[this.map.id];
|
var cache = OpenLayers.Layer.Google.cache[this.map.id];
|
||||||
|
var map = this.map;
|
||||||
if (cache) {
|
if (cache) {
|
||||||
var type = this.type;
|
var type = this.type;
|
||||||
var layers = this.map.layers;
|
var layers = map.layers;
|
||||||
var layer;
|
var layer;
|
||||||
for (var i=layers.length-1; i>=0; --i) {
|
for (var i=layers.length-1; i>=0; --i) {
|
||||||
layer = layers[i];
|
layer = layers[i];
|
||||||
@@ -139,17 +140,24 @@ OpenLayers.Layer.Google.v3 = {
|
|||||||
}
|
}
|
||||||
var container = this.mapObject.getDiv();
|
var container = this.mapObject.getDiv();
|
||||||
if (visible === true) {
|
if (visible === true) {
|
||||||
if (!cache.googleControl.hasChildNodes()) {
|
if (container.parentNode !== map.div) {
|
||||||
cache.googleControl.appendChild(this.map.viewPortDiv);
|
map.div.appendChild(container);
|
||||||
this.map.div.appendChild(container);
|
if (!cache.rendered) {
|
||||||
|
google.maps.event.addListenerOnce(this.mapObject, 'tilesloaded', function() {
|
||||||
|
cache.googleControl.appendChild(map.viewPortDiv);
|
||||||
|
cache.rendered = true;
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
cache.googleControl.appendChild(map.viewPortDiv);
|
||||||
|
}
|
||||||
google.maps.event.trigger(this.mapObject, 'resize');
|
google.maps.event.trigger(this.mapObject, 'resize');
|
||||||
}
|
}
|
||||||
this.mapObject.setMapTypeId(type);
|
this.mapObject.setMapTypeId(type);
|
||||||
cache.displayed = this.id;
|
cache.displayed = this.id;
|
||||||
} else {
|
} else {
|
||||||
if (cache.googleControl.hasChildNodes()) {
|
if (cache.googleControl.hasChildNodes()) {
|
||||||
this.map.div.removeChild(container);
|
map.div.appendChild(map.viewPortDiv);
|
||||||
this.map.div.appendChild(this.map.viewPortDiv);
|
map.div.removeChild(container);
|
||||||
}
|
}
|
||||||
delete cache.displayed;
|
delete cache.displayed;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -318,7 +318,7 @@
|
|||||||
var gmap = new OpenLayers.Layer.Google();
|
var gmap = new OpenLayers.Layer.Google();
|
||||||
map.addLayer(gmap);
|
map.addLayer(gmap);
|
||||||
|
|
||||||
t.delay_call(1, function() {
|
t.delay_call(4, function() {
|
||||||
t.ok(map.viewPortDiv.parentNode !== map.div, 'viewport moved inside GMaps');
|
t.ok(map.viewPortDiv.parentNode !== map.div, 'viewport moved inside GMaps');
|
||||||
|
|
||||||
var osm = new OpenLayers.Layer.OSM();
|
var osm = new OpenLayers.Layer.OSM();
|
||||||
|
|||||||
Reference in New Issue
Block a user