Add a compile-time flag to enable legacy IE support
This commit is contained in:
@@ -41,7 +41,9 @@ ol.renderer.dom.Map = function(container, map) {
|
||||
// in IE < 9, we need to return false from ondragstart to cancel the default
|
||||
// behavior of dragging images, which is interfering with the custom handler
|
||||
// in the Drag interaction subclasses
|
||||
if (goog.userAgent.IE && !goog.userAgent.isVersionOrHigher('9.0')) {
|
||||
if (ol.LEGACY_IE_SUPPORT && goog.userAgent.IE &&
|
||||
!goog.userAgent.isVersionOrHigher('9.0') &&
|
||||
goog.userAgent.VERSION !== '') {
|
||||
this.layersPane_.ondragstart = goog.functions.FALSE;
|
||||
this.layersPane_.onselectstart = goog.functions.FALSE;
|
||||
}
|
||||
@@ -88,6 +90,36 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) {
|
||||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
* @this {ol.renderer.dom.Map}
|
||||
* @param {Element} elem
|
||||
* @param {number} i
|
||||
*/
|
||||
var addChild;
|
||||
|
||||
// appendChild is actually more performant than insertBefore
|
||||
// in IE 7 and 8. http://jsperf.com/reattaching-dom-nodes
|
||||
if (ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) {
|
||||
addChild =
|
||||
/**
|
||||
* @this {ol.renderer.dom.Map}
|
||||
* @param {Element} elem
|
||||
*/ (
|
||||
function(elem) {
|
||||
goog.dom.appendChild(this.layersPane_, elem);
|
||||
});
|
||||
} else {
|
||||
addChild =
|
||||
/**
|
||||
* @this {ol.renderer.dom.Map}
|
||||
* @param {Element} elem
|
||||
* @param {number} i
|
||||
*/ (
|
||||
function(elem, i) {
|
||||
goog.dom.insertChildAt(this.layersPane_, elem, i);
|
||||
});
|
||||
}
|
||||
|
||||
var layerStates = frameState.layerStates;
|
||||
var layersArray = frameState.layersArray;
|
||||
var i, ii, layer, layerRenderer, layerState;
|
||||
@@ -96,7 +128,7 @@ ol.renderer.dom.Map.prototype.renderFrame = function(frameState) {
|
||||
layerRenderer = /** @type {ol.renderer.dom.Layer} */ (
|
||||
this.getLayerRenderer(layer));
|
||||
goog.asserts.assertInstanceof(layerRenderer, ol.renderer.dom.Layer);
|
||||
goog.dom.insertChildAt(this.layersPane_, layerRenderer.getTarget(), i);
|
||||
addChild.call(this, layerRenderer.getTarget(), i);
|
||||
layerState = frameState.layerStates[goog.getUid(layer)];
|
||||
if (layerState.sourceState == ol.source.State.READY) {
|
||||
layerRenderer.prepareFrame(frameState, layerState);
|
||||
|
||||
@@ -271,18 +271,20 @@ ol.renderer.dom.TileLayerZ_ = function(tileGrid, tileCoordOrigin) {
|
||||
this.target.style.width = '100%';
|
||||
this.target.style.height = '100%';
|
||||
|
||||
/**
|
||||
* Needed due to issues with IE7-8 clipping of transformed elements
|
||||
* Solution is to translate separately from the scaled/rotated elements
|
||||
* @private
|
||||
* @type {!Element}
|
||||
*/
|
||||
this.translateTarget_ = goog.dom.createElement(goog.dom.TagName.DIV);
|
||||
this.translateTarget_.style.position = 'absolute';
|
||||
this.translateTarget_.style.width = '100%';
|
||||
this.translateTarget_.style.height = '100%';
|
||||
if (ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) {
|
||||
/**
|
||||
* Needed due to issues with IE7-8 clipping of transformed elements
|
||||
* Solution is to translate separately from the scaled/rotated elements
|
||||
* @private
|
||||
* @type {!Element}
|
||||
*/
|
||||
this.translateTarget_ = goog.dom.createElement(goog.dom.TagName.DIV);
|
||||
this.translateTarget_.style.position = 'absolute';
|
||||
this.translateTarget_.style.width = '100%';
|
||||
this.translateTarget_.style.height = '100%';
|
||||
|
||||
goog.dom.appendChild(this.target, this.translateTarget_);
|
||||
goog.dom.appendChild(this.target, this.translateTarget_);
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
@@ -386,7 +388,11 @@ ol.renderer.dom.TileLayerZ_.prototype.addTile = function(tile, tileGutter) {
|
||||
*/
|
||||
ol.renderer.dom.TileLayerZ_.prototype.finalizeAddTiles = function() {
|
||||
if (!goog.isNull(this.documentFragment_)) {
|
||||
goog.dom.appendChild(this.translateTarget_, this.documentFragment_);
|
||||
if (ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) {
|
||||
goog.dom.appendChild(this.translateTarget_, this.documentFragment_);
|
||||
} else {
|
||||
goog.dom.appendChild(this.target, this.documentFragment_);
|
||||
}
|
||||
this.documentFragment_ = null;
|
||||
}
|
||||
};
|
||||
@@ -440,7 +446,12 @@ ol.renderer.dom.TileLayerZ_.prototype.removeTilesOutsideExtent =
|
||||
*/
|
||||
ol.renderer.dom.TileLayerZ_.prototype.setTransform = function(transform) {
|
||||
if (!ol.vec.Mat4.equals2D(transform, this.transform_)) {
|
||||
ol.dom.transformElement2D(this.target, transform, 6, this.translateTarget_);
|
||||
if (ol.LEGACY_IE_SUPPORT && ol.IS_LEGACY_IE) {
|
||||
ol.dom.transformElement2D(this.target, transform, 6,
|
||||
this.translateTarget_);
|
||||
} else {
|
||||
ol.dom.transformElement2D(this.target, transform, 6);
|
||||
}
|
||||
goog.vec.Mat4.setFromArray(this.transform_, transform);
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user