我正在听我的手机GPS并将经度和经度张贴到我的网络服务时间onLocationChanged
被调用。我的问题是,在大约2%的帖子中,它显示了非常不准确的结果(几英里外)。在发布之前,我应该检查location
对象的准确性吗?或者您还有其他建议吗?谢谢!
public void onLocationChanged(Location location) {
locationManager.removeUpdates(networkLocationListener);
textView.setText(textView.getText().toString() + "New GPS location: "
+ String.format("%9.6f", location.getLatitude()) + ", "
+ String.format("%9.6f", location.getLongitude()) + "\n");
//float accuracy = location.getAccuracy(); check this value?
postLocationToWebservice(location);
}
答案 0 :(得分:1)
使用Android的位置服务时,这是一个非常常见的问题。您可以引入一些检查,以确保只有准确的位置发布到您的网络服务。
1.比较所有定位服务的准确性。
2.定义准确度的最低限度和时间的最大限制。(因为有时候获得的位置是准确的,但它是旧的。)
检查此代码段并进行必要的更改以完成您想要的操作。确保您创建了一个 用于检查算法准确性的日志构建。
List<String> matchingProviders = myLocation.lm.getAllProviders();
for (String provider: matchingProviders)
{
Location location = myLocation.lm.getLastKnownLocation(provider);
if (location != null) {
float accuracy = location.getAccuracy();
long time = location.getTime();
if ((time > minTime && accuracy < bestAccuracy)) {
bestResult = location;
bestAccuracy = accuracy;
bestTime = time;
}
else if (time < minTime && bestAccuracy == Float.MAX_VALUE && time > bestTime) {
bestResult = location;
bestTime = time;
}
}
}
答案 1 :(得分:0)
有可能NETWORK_PROVIDER
代替GPS_PROVIDER
您可以随时通过
获取最新更新的GPS位置 mLocationMgr.getLastKnownLocation(LocationManager.GPS_PROVIDER);