【问题标题】:XY coordinates to quadtree in JavascriptXY坐标到Javascript中的四叉树
【发布时间】:2014-08-08 08:25:00
【问题描述】:

我想将瓦片 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。

我做错了什么?

【问题讨论】:

    标签: javascript coordinates quadtree


    【解决方案1】:

    在链接中的 bing 地图中,您可以看到 2 级的四键 t0t3 是 x=1 和 y=1 处的图块。坐标从 (0,0) 开始,您正在查看第 2 级!在级别,四键是 qt3。

    【讨论】:

      【解决方案2】:

      函数的实现是对的,结果也是。 (1,1) 中的瓦片有一个四键 03。它不是左上角:左上角瓦片是 (0,0)。

      【讨论】:

      • 是的,你是对的。这里一切都是正确的。坐标不是从 (1,1) 开始,而是从 (0,0) 开始。还是谢谢!
      • 四键是 t0t3 而不是 30。
      • 真的。我正在改变它
      猜你喜欢
      • 1970-01-01
      • 2020-09-23
      • 2017-11-18
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 2011-11-17
      相关资源
      最近更新 更多