@Override
public void onLocationChanged(Location location) {
Log.d(TAG, "Firing onLocationChanged..............................................");
mUpdatedLocation = location;
mLastUpdateTime = DateFormat.getTimeInstance().format(new Date());
updateUI();
}
private void updateUI() {
Log.d(TAG, "UI update initiated .............");
if (null != mUpdatedLocation && mUpdatedLocation.getAccuracy()>10) {
String lat = String.valueOf(mUpdatedLocation.getLatitude());
String lng = String.valueOf(mUpdatedLocation.getLongitude());
tvUpdatedlocation.setText("\n Updated At Time: " + mLastUpdateTime + "\n" +
"Latitude: " + lat + "\n" +
"Longitude: " + lng + "\n" +
"Accuracy: " + mUpdatedLocation.getAccuracy() + "\n" +
"Distance: " + mUpdatedLocation.distanceTo(mLastLocation) + "m\n" +
"Provider: " + mUpdatedLocation.getProvider());
} else {
Log.d(TAG, "location is null ...............");
}
}
我想比较两个位置,并以米为单位找到它们之间的距离。
目标位置(LOC A)是静态的,LOC B正在移动。 但是LOC B的纬度和经度正在频繁变化。
即使我在同一位置,位置也会改变。
任何帮助将不胜感激...
答案 0 :(得分:2)
因为位置不是魔术。它适用于无线信号,GPS信号等。这些变化,有噪声,有参考价值。计算不准确。注意准确性-X米的准确性仅表示您有66%的机会在该位置的X米以内。是的,您的位置将不断变化。您必须先决定要忽略多少变更,然后再决定是否真正搬家。
还请注意,您偶尔会得到真正关闭的阅读信息。例如,如果您整夜运行GPS,您将获得一些读数,这些数据表明您的距离是1英里。您还必须过滤掉这些尖峰,或者处理它们似乎会瞬移的事实。