From 5995202f3af66a27fbac76d4553aa582ddaec764 Mon Sep 17 00:00:00 2001 From: ahocevar Date: Mon, 4 Apr 2011 15:12:44 +0000 Subject: [PATCH] working around drawImage issue on Android 2.1 devices. r=erilem (closes #3243) git-svn-id: http://svn.openlayers.org/trunk/openlayers@11868 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf --- lib/OpenLayers/Renderer/Canvas.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/OpenLayers/Renderer/Canvas.js b/lib/OpenLayers/Renderer/Canvas.js index 6f73f88b32..fd1a556cee 100644 --- a/lib/OpenLayers/Renderer/Canvas.js +++ b/lib/OpenLayers/Renderer/Canvas.js @@ -50,7 +50,7 @@ OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, { * the renderer was locked. */ pendingRedraw: false, - + /** * Constructor: OpenLayers.Renderer.Canvas * @@ -224,8 +224,15 @@ OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, { // TODO: check that we haven't moved var canvas = this.canvas; canvas.globalAlpha = opacity; + var factor = OpenLayers.Renderer.Canvas.drawImageScaleFactor || + (OpenLayers.Renderer.Canvas.drawImageScaleFactor = + /android 2.1/.test(navigator.userAgent.toLowerCase()) ? + // 320 is the screen width of the G1 phone, for which + // drawImage works out of the box. + 320 / window.screen.width : 1 + ); canvas.drawImage( - img, x, y, width, height + img, x*factor, y*factor, width*factor, height*factor ); if (this.hitDetection) { this.setHitContextStyle("fill", featureId); @@ -541,7 +548,7 @@ OpenLayers.Renderer.Canvas = OpenLayers.Class(OpenLayers.Renderer, { } this.setCanvasStyle("reset"); }, - + /** * Method: getLocalXY * transform geographic xy into pixel xy @@ -680,3 +687,11 @@ OpenLayers.Renderer.Canvas.LABEL_FACTOR = { "t": 0, "b": -1 }; + +/** + * Constant: OpenLayers.Renderer.Canvas.drawImageScaleFactor + * {Number} Scale factor to apply to the canvas drawImage arguments. This + * is always 1 except for Android 2.1 devices, to work around + * http://code.google.com/p/android/issues/detail?id=5141. + */ +OpenLayers.Renderer.Canvas.drawImageScaleFactor = null;