我想将Converts tile XY坐标转换为指定细节级别的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。
我做错了什么?
答案 0 :(得分:0)
在您链接的bing地图中,您可以看到级别2的四元组t0t3是x = 1且y = 1的区块。坐标以(0,0)开头,你正在看第2级!在级别,四元组是qt3。
答案 1 :(得分:-1)
该功能的实施是正确的,结果也是如此。 (1,1)中的tile具有03的四元组键。它不是左上角:左上角的tile是(0,0)。