设置位置纬度&面向经度的经度

时间:2012-12-04 13:32:13

标签: android location latitude-longitude compass-geolocation

如何克隆自己的位置,然后向所需方向添加一些额外的米?

现在我的Android应用程序可以获得azimut和我的GPS位置,并且我将所需的距离硬编码为10米。

然后我的应用程序应该创建一个新的位置,正好在我面临的10米处。

所以如果我的位置是:经度17.537200603552526,纬度25.70358496181195

我希望它直接朝北移动8米,直接向东移动2米。

新的经度和纬度是否会像:

当前经度+ 0.00008,当前纬度+ 0.00002

下面是我的一些代码来计算渐变和新位置:

public double[] calculateXYLength(double[] vals, double distance)
{
    double x = vals[0];
    double y = vals[1];

    if (vals[0] < 0)
        {
            x = x * -1;
        }
    if (vals[1] < 0)
        {
            y = y * -1;
        }
    // Log.d("lengths", "K = " + distance + " / (" + x + " + " + y + " )" );
    double k = distance / (x + y);

    // Log.d("lengths", "vals[0]: " + vals[0] + "  vals[1]: " + vals[1]);
    // Log.d("lengths", "x: " + (vals[0] * k) + "  y: " + (vals[1] * k) +
    // "  k: " + k);
    return new double[] { (vals[0] * k), (vals[1] * k) };
}

请注意,vals是我已经计算过的渐变,结果我将返回,我将用它来添加到我的新位置点。

    Location newPosition = currentPosition
    newPosition.setLongitude(myPosition.getLongitude() + val[0]);
    newPosition.setLatitude(myPosition.getLatitude() + val[1]);

但问题是,我没有在这两个地点之间达到理想的距离。而且我无法弄清楚原因。如何在纬度/经度上添加所需距离?

谢谢, 约翰

1 个答案:

答案 0 :(得分:0)

经度和纬度的度量是度数而不是米,我认为这是问题所在。 1度= 111.12公里