Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android定位客户端不如谷歌地图应用准确_Android_Google Maps_Location Client - Fatal编程技术网

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点一样更新时检索存储的最后一个位置。如果没有更新,您将得到相同的值。位置对象已附加时间,您可以看到它是何时收到的

  • 打开卫星视图。正常的“向量”观点在中国被混淆了。出于某种原因,谷歌地图应用程序没有这个问题
  • GPS返回的位置是正确的,即使在中国也是如此(考虑WGS84投影)。只有地图不是

  • 其他地图提供程序(如)强制您使用自己的LocationClient自定义实现。通过这种方式,您可以在地图上使用位置。

    中国对GPS数据有特殊处理,因为政府强制相关地图制作公司增加一些偏差。
    我被它困扰了一段时间。

    一个迟来的回答,但没有人说:

    您可以使用locationRequest设置locationClient的精度。 例如

    您还可以设置更新的频率。如果你需要非常精确的东西,在几秒钟内读取一系列读数。然后查看每个读数上的“准确度”数字。剔除精度明显低于其他读数的读数。然后平均剩下的

    这是一个非常基本的算法,我在美国的一个星系S5上获得了1-2英尺的精度


    如果你使用较低的精度,它将平均gps数据与wifi和手机的结果。GPS消耗更多的电池,因此在这种设置下使用它的频率较低。WiFi使用物理地址查找,因为它总是把我移到我家附近的公共道路上,甚至当我在中间时。p> 谢谢你的建议,但我有这两个权限,并尝试它与粗删除。据我所知,LocationClient或LocationManager将使用基于可用权限允许获取的最准确位置。感谢您的帮助。事实上,经过更多的测试,我们发现这确实是一个问题,因为在中国的位置是由一个因素引起的,我们在其他几个国家进行了测试,没有这个问题。谢谢-这肯定是非常有帮助的,知道这件事是件好事。但就中国而言,实际上是中国政府不允许非中国公司持有准确的地图,因此存在一致且可预测的偏移量。