跟踪驱动距离时遇到问题。 我在本文中尝试过:Source-Code is completely also there
驱动距离的总和不是我车内显示的实际驾驶距离。 在2-3公里之后,我在车上的显示距离与200-800米的应用程序之间存在差异。在这短距离:o) 我也认识到的是距离,例如在驾驶曲线时,正在递减。 我还为侦听器尝试了几个minTime和minDistance值,但没有成功。
我做错了什么? 当我使用“MyTracks”应用程序时,驱动距离实际上非常精确且正确。 我只需要一种方法来从开始到结束总结完全驱动的方式,而不是在谷歌地图中显示它。这真的很复杂吗?
亲切的问候 弗兰克好的,代码中有趣的部分:
public void startListening(final Activity activity)
{
if (locationManager == null)
{
locationManager = (LocationManager) activity.getSystemService(Context.LOCATION_SERVICE);
}
final Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
final String bestProvider = locationManager.getBestProvider(criteria, true);
if (bestProvider != null && bestProvider.length() > 0)
{
locationManager.requestLocationUpdates(bestProvider, GPSManager.gpsMinTime,
GPSManager.gpsMinDistance, locationListener);
}
else
{
final List<String> providers = locationManager.getProviders(true);
for (final String provider : providers)
{
locationManager.requestLocationUpdates(provider, GPSManager.gpsMinTime,
GPSManager.gpsMinDistance, locationListener);
}
}
}
和
private double calcGeoDistance(final double lat1, final double lon1, final double lat2, final double lon2)
{
double distance = 0.0;
try
{
final float[] results = new float[3];
Location.distanceBetween(lat1, lon1, lat2, lon2, results);
distance = results[0];
}
catch (final Exception ex)
{
distance = 0.0;
}
return distance;
}
和
private void updateMeasurement(){
double distance = calcGeoDistance(startLat,startLon,currentLat,currentLon) * multipliers[unitindex];
String distanceText = "" + RoundDecimal(distance,2) + " " + unitstrings[unitindex];
((TextView)findViewById(R.id.distance)).setText(distanceText);
}
和
public double RoundDecimal(double value, int decimalPlace)
{
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(decimalPlace, 6);
return bd.doubleValue();
}
哦,当我把它写下来时,似乎距离是在起点和当前点之间计算的。不是最后两次测量与所有值之和,不是吗?
答案 0 :(得分:0)
根据您指定的标准,您可能会进入预防位置。增加功率要求。另外,请注意要返回的提供程序的名称。如果您想要准确性,那么您将需要GPS提供商。
有关详细信息,请参阅以下链接: I keep getting an inaccurate location in Android