某些设备上的位置 reading/bad 准确度错误
Wrong location reading/bad accuracy on some devices
我使用 Google MAPS API 来获取当前用户的位置(GPS 坐标)。但是我有一个奇怪的问题:
在我的Lenovo Android 4.2 位置相当准确。
但在另一台设备 (LG G3s) 中,位置偏差超过 400-500 米。
并且对于不同的设备也是一样的情况。一个 - 没问题,另一个错误。
这是我的代码:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
@Override
public void onConnected(Bundle bundle) {
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(UPDATE_INTERVAL);
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
}
@Override
public void onConnectionSuspended(int i) {
Toast.makeText(getApplicationContext(), "GoogleApiClient connection has been suspend", Toast.LENGTH_SHORT).show();
}
@Override
public void onLocationChanged(Location location) {
Toast.makeText(getApplicationContext(), "LOCATION CHANGED\n"+
"LAT="+location.getLatitude()+"\n"+
"LON="+location.getLongitude(), Toast.LENGTH_SHORT).show();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Toast.makeText(getApplicationContext(), "GoogleApiClient connection has failed", Toast.LENGTH_SHORT).show();
}
也许,我做错了什么?
如何获得更准确的坐标?
更新:
我在外面测试了 GPS,坐标相当准确。
但是在 house/office - 坐标错误。用户位于办公室,但应用程序显示他的位置在河中,距办公室约 500-600 米)
我认为我的应用程序有问题,因为用户说他在他的设备上运行 Google 地图并且位置没有错..
400-500 米对于基于网络的位置来说是正常的。他们可能关闭了 GPS。
您可以通过要求仅使用 GPS 提供程序来改进。
在建筑物内,当靠近 window 时,这将导致大约 30 - 50m 的偏移。这比 500m 的网络偏移要好。
我使用 Google MAPS API 来获取当前用户的位置(GPS 坐标)。但是我有一个奇怪的问题:
在我的Lenovo Android 4.2 位置相当准确。
但在另一台设备 (LG G3s) 中,位置偏差超过 400-500 米。
并且对于不同的设备也是一样的情况。一个 - 没问题,另一个错误。
这是我的代码:
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mGoogleApiClient.connect();
@Override
public void onConnected(Bundle bundle) {
mLocationRequest = LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(UPDATE_INTERVAL);
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this);
}
@Override
public void onConnectionSuspended(int i) {
Toast.makeText(getApplicationContext(), "GoogleApiClient connection has been suspend", Toast.LENGTH_SHORT).show();
}
@Override
public void onLocationChanged(Location location) {
Toast.makeText(getApplicationContext(), "LOCATION CHANGED\n"+
"LAT="+location.getLatitude()+"\n"+
"LON="+location.getLongitude(), Toast.LENGTH_SHORT).show();
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Toast.makeText(getApplicationContext(), "GoogleApiClient connection has failed", Toast.LENGTH_SHORT).show();
}
也许,我做错了什么?
如何获得更准确的坐标?
更新: 我在外面测试了 GPS,坐标相当准确。 但是在 house/office - 坐标错误。用户位于办公室,但应用程序显示他的位置在河中,距办公室约 500-600 米)
我认为我的应用程序有问题,因为用户说他在他的设备上运行 Google 地图并且位置没有错..
400-500 米对于基于网络的位置来说是正常的。他们可能关闭了 GPS。
您可以通过要求仅使用 GPS 提供程序来改进。 在建筑物内,当靠近 window 时,这将导致大约 30 - 50m 的偏移。这比 500m 的网络偏移要好。