Android定位客户端不如谷歌地图应用准确
首先,我想说,我在中国,谷歌定位服务有时会出现问题 我正在使用Android定位客户端不如谷歌地图应用准确,android,google-maps,location-client,Android,Google Maps,Location Client,首先,我想说,我在中国,谷歌定位服务有时会出现问题 我正在使用LocationClient获取用户的当前位置 protected void onCreate(Bundle savedInstanceState) { ... mLocationClient = new LocationClient(this, this, this); ... } public void onConnected(Bundle connectionHint) { Location location
LocationClient
获取用户的当前位置
protected void onCreate(Bundle savedInstanceState) {
...
mLocationClient = new LocationClient(this, this, this);
...
}
public void onConnected(Bundle connectionHint) {
Location location = mLocationClient.getLastLocation();
...
}
非常简单。然后在我的onConnected
回调中,我得到了位置
protected void onCreate(Bundle savedInstanceState) {
...
mLocationClient = new LocationClient(this, this, this);
...
}
public void onConnected(Bundle connectionHint) {
Location location = mLocationClient.getLastLocation();
...
}
我返回的位置总是一样的,但它距离我的实际位置大约500米。GPS已启用,但指示正在使用的图标不亮。我也使用WiFi和3G
当我打开实际的谷歌地图应用程序时,我的位置非常准确(与我在自己的应用程序中得到的位置不同)。我还看到了指示正在使用GPS的图标
问题
谢谢 使用方法“getLastLocation()”时,它提供该位置存储的最新已知位置。它还与您在清单文件中为应用程序授予的权限级别有关 尝试同时使用以下两种方法:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
在您的清单文件中,查看它是否提高了准确性。Ad.1谷歌地图不断更新位置。请尝试以下介绍: Ad.2 getLastLocation可能会在像第1点一样更新时检索存储的最后一个位置。如果没有更新,您将得到相同的值。位置对象已附加时间,您可以看到它是何时收到的
其他地图提供程序(如)强制您使用自己的LocationClient自定义实现。通过这种方式,您可以在地图上使用位置。中国对GPS数据有特殊处理,因为政府强制相关地图制作公司增加一些偏差。
我被它困扰了一段时间。一个迟来的回答,但没有人说: 您可以使用locationRequest设置locationClient的精度。 例如 您还可以设置更新的频率。如果你需要非常精确的东西,在几秒钟内读取一系列读数。然后查看每个读数上的“准确度”数字。剔除精度明显低于其他读数的读数。然后平均剩下的 这是一个非常基本的算法,我在美国的一个星系S5上获得了1-2英尺的精度
如果你使用较低的精度,它将平均gps数据与wifi和手机的结果。GPS消耗更多的电池,因此在这种设置下使用它的频率较低。WiFi使用物理地址查找,因为它总是把我移到我家附近的公共道路上,甚至当我在中间时。p> 谢谢你的建议,但我有这两个权限,并尝试它与粗删除。据我所知,LocationClient或LocationManager将使用基于可用权限允许获取的最准确位置。感谢您的帮助。事实上,经过更多的测试,我们发现这确实是一个问题,因为在中国的位置是由一个因素引起的,我们在其他几个国家进行了测试,没有这个问题。谢谢-这肯定是非常有帮助的,知道这件事是件好事。但就中国而言,实际上是中国政府不允许非中国公司持有准确的地图,因此存在一致且可预测的偏移量。