Я хочу преобразовать координаты XY плитки Converts в QuadKey с заданным уровнем детализации.
Мне нужно сделать это в Javascript. Чтобы проиллюстрировать проблему, вы найдете точное описание здесь: http://msdn.microsoft.com/en-us/library/bb259689.aspx и там же можно найти функцию на C#. Имя функции: tileXYToQuadKey.
Мне нужно реализовать это в Javascript. Вот JSFiddle, который я сделал:
http://jsfiddle.net/cueqzapper/m44bgk1p/
var tileXYToQuadKey = function(tileX, tileY, levelOfDetail)
{
quadKey = 'q';
for (var i = levelOfDetail; i > 0; i--)
{
var digit = 0;
var mask = 1 << (i - 1);
console.log(mask);
if ((tileX & mask) != 0)
{
digit++;
}
if ((tileY & mask) != 0)
{
digit++;
digit++;
}
quadKey += 't' + digit;
}
return quadKey;
}
console.log(tileXYToQuadKey(1,1,2));
Но что-то не так. Когда я вызываю функцию следующим образом: tileXYToQuadKey(1,1,2), я возвращаю qt0t3. Но правильным было бы qt0t0, потому что тайл с координатами x=1, y=1, очевидно, будет в верхнем левом углу, а значит, у него будет четырехъядерный ключ 00.
Что я делаю не так?