如何使用 fusedLocation 获得良好的准确性?
Posted
技术标签:
【中文标题】如何使用 fusedLocation 获得良好的准确性?【英文标题】:How to get a good accuracy using fusedLocation? 【发布时间】:2019-01-01 23:20:13 【问题描述】:在我的应用中,我需要跟踪用户位置。为此,我使用FusedLocation
,每隔 10 秒查询一次位置。不幸的是,返回的位置精度为 500.0 米或 164O 英尺。在android FusedLocation
doc 中规定
精确到几英尺的位置更新
我的请求设置为:
LocationRequest locationRequest = new LocationRequest();
locationRequest.setSmallestDisplacement(10);
locationRequest.setInterval(30000); // 30 s
locationRequest.setFastestInterval(10000); // 10 s
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
另外,我正在请求粗略和精细位置的许可。
我怎样才能获得更好的准确性?
【问题讨论】:
【参考方案1】:也许您可以尝试从NETWORK_PROVIDER
询问位置,这有助于我解决用户最后已知位置的问题。
我是这样处理的:
LocationManager locationManager;
locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, locationListener);
Location lastKnownLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
LatLng userLocation = new LatLng(lastKnownLocation.getLatitude(), lastKnownLocation.getLongitude());
如果这对你有帮助,请告诉我:)
最好的问候,
迪米塔尔·格奥尔基耶夫
【讨论】:
我正在使用 Google Play 服务而不是 Android 框架位置,因为性能更高(位置和电池)。使用 Network-provider 确实提供了更好的精度(使用 locationRequest),但我不需要网络连接,而且当我使用网络时,我的精度为 500m。我确实知道准确性不会很好,但有这么多似乎很奇怪。谢谢你的回答。以上是关于如何使用 fusedLocation 获得良好的准确性?的主要内容,如果未能解决你的问题,请参考以下文章
FusedLocation 不会触发 android api <= 21 的 locationcallback