如何克隆自己的位置,然后向所需方向添加一些额外的米?
现在我的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]);
但问题是,我没有在这两个地点之间达到理想的距离。而且我无法弄清楚原因。如何在纬度/经度上添加所需距离?
谢谢, 约翰
答案 0 :(得分:0)
经度和纬度的度量是度数而不是米,我认为这是问题所在。 1度= 111.12公里