我想转换将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。
我做错了什么?
在链接的bing地图中,你可以看到关卡2的四键t0t3是x=1和y=1处的贴图。坐标从(0,0)开始,你看到的是第2层!
函数的实现是正确的,结果也是正确的。(1,1)中的贴图的四键值为03。它不是左上角:左上角的tile是(0,0)