我正在构建使用Google地图的应用程序。我每隔10米或15秒使用代码来请求位置更新。但我想知道,如果提供商无法提供更新一段时间,我是否可以知道上次位置更新与最新位置更新之间的距离。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
setUpMapIfNeeded();
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
String provider = locationManager.getBestProvider(new Criteria(), false);
locationManager.requestLocationUpdates(provider, 15000, 10, this);
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
onLocationChanged(location);
if (provider.matches("gps")) {
Toast.makeText(getApplicationContext(), provider, Toast.LENGTH_SHORT).show();
}
}
}
答案 0 :(得分:1)
如果我理解正确你需要计算2个lat / lng点之间的距离,前一个(你可以存储在全局变量中,或者甚至将它保存在SharedPreferences中)和新的(你刚刚进入的那个) onLocationChanged事件)
下面的代码是我在项目中使用的一个例子,我希望它有所帮助!
String distance = "";
float distanceSort = 0;
float[] results = new float[1];
Location.distanceBetween(currentlatLnglatitude, currentlatLnglongitude,
oldlatitude, oldlongitude, results);
if (results.length > 0)
{
distanceSort = results[0];
if (distanceSort < 1000)
{
int roundedDistance = Math.round(distanceSort);
distance = String.valueOf(roundedDistance) + " m";
}
else
{
int roundedDistance = Math.round(distanceSort / 1000);
if (roundedDistance > 50)
{
distance = "> 50 km";
}
else
{
distance = String.valueOf(roundedDistance) + " km";
}
}
}