diff --git a/src/ol/map.js b/src/ol/map.js index 1d4d518539..e53a1f3477 100644 --- a/src/ol/map.js +++ b/src/ol/map.js @@ -969,12 +969,27 @@ ol.Map.prototype.handleLayerGroupChanged_ = function() { /** + * Returns `true` if the map is defined, `false` otherwise. The map is defined + * if it is contained in `document`, visible, has non-zero height and width, and + * has a defined view. * @return {boolean} Is defined. */ ol.Map.prototype.isDef = function() { + if (!goog.dom.contains(document, this.viewport_)) { + return false; + } + if (!goog.style.isElementShown(this.viewport_)) { + return false; + } + var size = this.getSize(); + if (!goog.isDefAndNotNull(size) || size[0] <= 0 || size[1] <= 0) { + return false; + } var view = this.getView(); - return goog.isDef(view) && view.isDef() && - goog.isDefAndNotNull(this.getSize()); + if (!goog.isDef(view) || !view.isDef()) { + return false; + } + return true; }; diff --git a/src/ol/overlay.js b/src/ol/overlay.js index bd81f321c7..17081ba375 100644 --- a/src/ol/overlay.js +++ b/src/ol/overlay.js @@ -335,6 +335,7 @@ ol.Overlay.prototype.updatePixelPosition_ = function() { } var pixel = map.getPixelFromCoordinate(position); + goog.asserts.assert(!goog.isNull(pixel)); var mapSize = map.getSize(); goog.asserts.assert(goog.isDef(mapSize)); var style = this.element_.style;