Android:无法获得准确的经纬度值
Posted
技术标签:
【中文标题】Android:无法获得准确的经纬度值【英文标题】:Android: Not able to get accurate latitude and longitude value 【发布时间】:2012-05-24 09:13:26 【问题描述】:在我的应用程序中,我希望通过 GPS 和/或网络获得纬度和经度值。我的代码可以工作,但有时它给出了准确的值,有时它没有给出准确的值,有时它给出的值距离准确位置 10 或 20 米。 代码:
mlocListener = new MyLocationListener(getApplicationContext());
/* Use the LocationManager class to obtain GPS locations */
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
if (mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER))
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,
10000, 0, mlocListener);
else if (mlocManager
.isProviderEnabled(LocationManager.NETWORK_PROVIDER))
mlocManager.requestLocationUpdates(
LocationManager.NETWORK_PROVIDER, 10000, 0, mlocListener);
Location gpsLocation = mlocManager
.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location netLocation = mlocManager
.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
if (gpsLocation != null)
mlocListener.latitude = gpsLocation.getLatitude();
mlocListener.longitude = gpsLocation.getLongitude();
double lat = (double) (gpsLocation.getLatitude());
double lng = (double) (gpsLocation.getLongitude());
Toast.makeText(this, "Location attributes using GPS Provider",
Toast.LENGTH_LONG).show();
else if (netLocation != null)
mlocListener.latitude = netLocation.getLatitude();
mlocListener.longitude = netLocation.getLongitude();
double lat = (double) (netLocation.getLatitude());
double lng = (double) (netLocation.getLongitude());
Toast.makeText(this, "Location attributes using NETWORK Provider",
Toast.LENGTH_SHORT).show();
【问题讨论】:
Gps is horribly inaccurate in android 的可能重复项 试试 mContext.getSystemService(...); mContext 是您活动的上下文 对不起,如果这段代码重复了我的我...... 【参考方案1】:使用 loc.getAccuracy() 方法检查您收到的位置的准确度。如果该值小于 10(或小于该值),那么您可以考虑它,否则等待位置 Lister 获取另一个位置。
getLastKnownLocation 是您最后一个已知位置,不要只使用 getAccuracy 并检查时间。
如果您只需要准确的位置,最好不要使用 getLastKnownLocation。
【讨论】:
【参考方案2】:通常 GPS 精确到 3m,但如果它是 10 到 20 米,则 GPS 可以做到这一点。
民用标准 GPS 接收器的精度可低至几 米。实际上,接收卫星的数量和几何形状 对准确性有很大影响,在日常使用中, 预计约 20 m。
GPS Accuracy
此外,如果您从网络提供商处获取当前位置,则可能会出现更不准确的位置。
【讨论】:
【参考方案3】:如果您希望获得最大的准确性,我会说您解雇网络提供商,因为它受到与电话运营商等相关的其他因素的影响。
locManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
这会使用您的手机内部 GPS 接收器获取您的位置(耗费时间),但它可以为您提供尽可能高的准确度。
【讨论】:
以上是关于Android:无法获得准确的经纬度值的主要内容,如果未能解决你的问题,请参考以下文章