polyline: Added decodeSigned/UnsignedInteger() functions

This commit is contained in:
Tobias Bieniek
2013-03-09 22:40:07 +01:00
parent 36923d6688
commit e802cc3d56
2 changed files with 68 additions and 0 deletions

View File

@@ -16,6 +16,18 @@ ol.parser.polyline.encodeSignedInteger = function(num) {
};
/**
* Decode one single signed integer from an encoded string
*
* @param {string} encoded An encoded string.
* @return {number} The decoded signed integer.
*/
ol.parser.polyline.decodeSignedInteger = function(encoded) {
var result = ol.parser.polyline.decodeUnsignedInteger(encoded);
return ((result & 1) ? ~(result >> 1) : (result >> 1));
};
/**
* Encode one single unsigned integer and return an encoded string
*
@@ -33,3 +45,24 @@ ol.parser.polyline.encodeUnsignedInteger = function(num) {
encodeString += (String.fromCharCode(value));
return encodeString;
};
/**
* Decode one single unsigned integer from an encoded string
*
* @param {string} encoded An encoded string.
* @return {number} The decoded unsigned integer.
*/
ol.parser.polyline.decodeUnsignedInteger = function(encoded) {
var result = 0;
var shift = 0;
var b, i = 0;
do {
b = encoded.charCodeAt(i++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
return result;
};