我正面临一个问题,以获得目前的位置在Android。
我使用的是安卓的FusedLocationAPI。但我得到的纬度和经度并不准确。我把凭证贴在谷歌地图上,上面显示的是我的位置,与我准确的位置不同。
我还试图获得位置更新,并验证了Location.getAccuracy()
的准确性,在这里,我得到的最小精度是10米。这里我使用精细定位作为许可。因此,我的问题是,我如何才能得到我的准确定位,换句话说,准确性低于5米。
我的密码是
GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.enableAutoManage(this, this)
.build();
LocationRequest mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
mLocationRequest.setSmallestDisplacement(1);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,MainActivity.this);
@Override
public void onLocationChanged(Location location) {
Toast.makeText(MainActivity.this,";-"+location.getAccuracy(),Toast.LENGTH_LONG).show();
if(location.hasAccuracy() && location.getAccuracy()<lastLocationAccuracy){
latitude = location.getLatitude();
longitude = location.getLongitude();
}
}
发布于 2016-06-19 22:38:37
发布于 2016-06-20 04:39:14
我怎样才能得到准确的位置,换句话说,精度低于5米?
简短的回答
在使用位置时,重要的是要了解您可能要求一定的精度,但是并不保证在实际的位置更新中获得精确的。
通常不能期望获得准确的位置更新(小于5m )。这取决于许多因素,最重要的是设备和物理环境的能力。
冗长的答案
FusedLocationApi在幕后做了很多魔术。除其他外,它还试图找出使用哪些提供商(GPS、WiFi、蜂窝塔、蓝牙等)。这些供应商在准确性、更新频率和电池损耗方面各有优缺点。然后,它融合来自不同提供者的信息,从而获得名称。
示例1:如果您在纽约市的一个城市峡谷,您将有一个非常困难的时间来获得一个良好和准确的定位系统。另一方面,将有大量的WiFi网络,这些网络已经被谷歌映射和地理定位。所以你可能会得到一个快速的定位修复。精度将取决于WiFi网络的密度,更重要的是取决于墙/建筑物的密度。我不想在这里得到比15-30米更精确的东西。
示例2:如果你在沙漠中的某个地方,情况正好相反。最有可能的是,附近不会有任何WiFi网络,但你会得到一个清晰的全球定位系统修复。在这里,您可以期望位置更新的准确性< 5m。
你的设置看起来是正确的。选择高更新率和高优先级将确保GPS被用作提供者(如果在设备上可用的话)。确保你在外面测试你的应用程序,清晰地看到天空。如果你一直收到非常遥远的位置,用另一个设备进行测试。如果它仍然不能工作,那么您的代码就有问题了。您可能希望使用一个实用工具类,如LocationAssistant (完全公开:我是该项目的作者),以确保正确设置所有内容。
误解
最后,我想澄清我在其他评论中看到的两个常见的误解:
3m
的准确性,而且它确实比100m
off更准确。因此,不要依赖它的关键功能。ACCESS_FINE_LOCATION
权限完全足以获得高精度的更新。没有必要额外指定 ACCESS_COARSE_LOCATION
。https://stackoverflow.com/questions/37915023
复制相似问题