polyline: Added encode/decodeUnsignedIntegers() functions
This commit is contained in:
@@ -72,6 +72,52 @@ ol.parser.polyline.decodeFlatCoordinates = function(encoded, opt_dimension) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Encode a list of unsigned integers and return an encoded string
|
||||||
|
*
|
||||||
|
* @param {Array.<number>} numbers A list of unsigned integers.
|
||||||
|
* @return {string} The encoded string.
|
||||||
|
*/
|
||||||
|
ol.parser.polyline.encodeUnsignedIntegers = function(numbers) {
|
||||||
|
var encoded = '';
|
||||||
|
|
||||||
|
var numbersLength = numbers.length;
|
||||||
|
for (var i = 0; i < numbersLength; ++i) {
|
||||||
|
encoded += ol.parser.polyline.encodeUnsignedInteger(numbers[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
return encoded;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Decode a list of unsigned integers from an encoded string
|
||||||
|
*
|
||||||
|
* @param {string} encoded An encoded string.
|
||||||
|
* @return {Array.<number>} A list of unsigned integers.
|
||||||
|
*/
|
||||||
|
ol.parser.polyline.decodeUnsignedIntegers = function(encoded) {
|
||||||
|
var numbers = new Array();
|
||||||
|
|
||||||
|
var encodedLength = encoded.length;
|
||||||
|
for (var i = 0; i < encodedLength;) {
|
||||||
|
var result = 0;
|
||||||
|
var shift = 0;
|
||||||
|
|
||||||
|
var b;
|
||||||
|
do {
|
||||||
|
b = encoded.charCodeAt(i++) - 63;
|
||||||
|
result |= (b & 0x1f) << shift;
|
||||||
|
shift += 5;
|
||||||
|
} while (b >= 0x20);
|
||||||
|
|
||||||
|
numbers.push(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
return numbers;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Encode one single floating point number and return an encoded string
|
* Encode one single floating point number and return an encoded string
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -26,6 +26,29 @@ describe('ol.parser.polyline', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
var unsignedIntegers = [0, 30, 1, 31, 32, 2, 174];
|
||||||
|
var encodedUnsignedIntegers = '?]@^_@AmD';
|
||||||
|
|
||||||
|
describe('encodeUnsignedIntegers', function() {
|
||||||
|
it('returns expected value', function() {
|
||||||
|
var encodeUnsignedIntegers = ol.parser.polyline.encodeUnsignedIntegers;
|
||||||
|
|
||||||
|
expect(encodeUnsignedIntegers(
|
||||||
|
unsignedIntegers)).toEqual(encodedUnsignedIntegers);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('decodeUnsignedIntegers', function() {
|
||||||
|
it('returns expected value', function() {
|
||||||
|
var decodeUnsignedIntegers = ol.parser.polyline.decodeUnsignedIntegers;
|
||||||
|
|
||||||
|
expect(decodeUnsignedIntegers(
|
||||||
|
encodedUnsignedIntegers)).toEqual(unsignedIntegers);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
describe('encodeFloat', function() {
|
describe('encodeFloat', function() {
|
||||||
it('returns expected value', function() {
|
it('returns expected value', function() {
|
||||||
var encodeFloat = ol.parser.polyline.encodeFloat;
|
var encodeFloat = ol.parser.polyline.encodeFloat;
|
||||||
|
|||||||
Reference in New Issue
Block a user