ZigZag算法
亲测有用
/* 解码 */
function decodePolygon(coordinate, encodeOffsets) {
var result = [];
var prevX = encodeOffsets[0];
var prevY = encodeOffsets[1];
for (var i = 0; i < coordinate.length; i += 2) {
var x = coordinate.charCodeAt(i) - 64;
var y = coordinate.charCodeAt(i + 1) - 64;
// ZigZag decoding
x = (x >> 1) ^ (-(x & 1));
y = (y >> 1) ^ (-(y & 1));
// Delta deocding
x += prevX;
y += prevY;
prevX = x;
prevY = y;
// Dequantize
result.push([x / 1024, y / 1024]);
}
return result;
}
/* 压缩 */
// function encodePolygon(coordinate) {
// var prevX = 0,
// prevY = 0;
// var coorstr = "";
// var encodeOffsets = [];
// var result = {
// 'coordinate': coorstr,
// 'encodeOffsets': encodeOffsets
// };
// for (var i = coordinate.length - 1; i > 0; i--) {
// var x = coordinat