diff --git a/lib/OpenLayers/Format/EncodedPolyline.js b/lib/OpenLayers/Format/EncodedPolyline.js index b09bd2b39e..a71b0a449b 100644 --- a/lib/OpenLayers/Format/EncodedPolyline.js +++ b/lib/OpenLayers/Format/EncodedPolyline.js @@ -62,35 +62,25 @@ OpenLayers.Format.EncodedPolyline = OpenLayers.Class(OpenLayers.Format, { return null; var points = new Array(); - - var lat = 0; - var lon = 0; + var point = new Array(0, 0); for (var i = 0; i < encoded.length;) { - var b; - var result = 0; - var shift = 0; + for (var dim = 0; dim < 2; ++dim) { + var result = 0; + var shift = 0; - do { - b = encoded.charCodeAt(i++) - 63; - result |= (b & 0x1f) << shift; - shift += 5; - } while (b >= 0x20); + var b; + do { + b = encoded.charCodeAt(i++) - 63; + result |= (b & 0x1f) << shift; + shift += 5; + } while (b >= 0x20); - lat += ((result & 1) ? ~(result >> 1) : (result >> 1)); + point[dim] += ((result & 1) ? ~(result >> 1) : (result >> 1)); + } - result = 0; - shift = 0; - - do { - b = encoded.charCodeAt(i++) - 63; - result |= (b & 0x1f) << shift; - shift += 5; - } while (b >= 0x20); - - lon += ((result & 1) ? ~(result >> 1) : (result >> 1)); - - points.push(new OpenLayers.Geometry.Point(lon * 1e-5, lat * 1e-5)); + points.push(new OpenLayers.Geometry.Point(point[1] * 1e-5, + point[0] * 1e-5)); } if (this.geometryType == "polygon")