Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.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/8/lua/3.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 FusedLocationProvider有时给出错误的位置_Android_Location_Android Fusedlocation_Fusedlocationproviderclient - Fatal编程技术网

Android FusedLocationProvider有时给出错误的位置

Android FusedLocationProvider有时给出错误的位置,android,location,android-fusedlocation,fusedlocationproviderclient,Android,Location,Android Fusedlocation,Fusedlocationproviderclient,我正在使用FusedLocationProviderClient获取前台服务中的位置更新。经过几天的测试和观察,我发现错误的位置与我的实际位置相差约4公里,类似于此,但定位结果的精度为24米。这怎么可能呢 如果精度在4公里左右,则可以消除该误差。这种行为并不经常发生,但在10台设备中至少每4台发生一次。当我计算旅行距离时,这就成了一个问题 我知道它不是缓存位置,因为我每天都会关闭和打开位置服务。(根据,关闭位置服务将清除缓存位置。) 你知道为什么它给出了错误的位置,以及如何消除它吗?此外,在不关

我正在使用
FusedLocationProviderClient
获取前台服务中的位置更新。经过几天的测试和观察,我发现错误的位置与我的实际位置相差约4公里,类似于此,但
定位结果
的精度为24米。这怎么可能呢

如果精度在4公里左右,则可以消除该误差。这种行为并不经常发生,但在10台设备中至少每4台发生一次。当我计算旅行距离时,这就成了一个问题

我知道它不是缓存位置,因为我每天都会关闭和打开位置服务。(根据,关闭位置服务将清除缓存位置。)


你知道为什么它给出了错误的位置,以及如何消除它吗?此外,在不关闭位置服务的情况下清除缓存位置?

FusedLocationProvider可能会给出错误的结果,例如当设备的gps连接关闭时(或者“视图”中的卫星不足以提供准确数据)。它将使用wifi路由器提供的最近的手机发射塔/位置数据(谷歌会自动跟踪),在谷歌没有强大位置地图的地方(城市中心以外的任何地方)给出极不正确的结果

您有两个选择:

  • 使用基于位置服务的非Google Play解决方案-可以选择忽略非gps位置数据(wifi/cellular)

    您甚至可以指定位置,以便获得真正准确的位置数据。当gps没有接收到坐标(如室内)时,您将丢失信息,但作为交换,根据您的要求,来自错误映射位置的“噪音”将减少

  • 使用“捕捉到道路”API。有一个使用开放街道地图数据的免费版本,名为,当使用docker或自己构建源代码(详细信息在链接中)托管(本地或云中)时提供后端

    curl”http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?步骤=真


  • 此请求将返回“捕捉”到最近道路的位置。有多种选择,例如优先考虑高速公路等。然后,您可以丢弃不在用户以前所在的“路径”上的点,因为快速切换到4公里以外的道路,然后再返回的可能性不大。

    FusedLocationProvider可能会在设备的gps连接关闭时给出错误的结果(或者没有足够的卫星在“视图”中提供准确的数据)。它将使用wifi路由器提供的最近的基站/位置数据(谷歌会自动跟踪),在谷歌没有强大的位置地图存在的地方(城市中心以外的任何地方)给出极不正确的结果

    您有两个选择:

  • 使用基于位置服务的非Google Play解决方案-可以选择忽略非gps位置数据(wifi/cellular)

    您甚至可以指定位置,以便获得真正准确的位置数据。当gps没有接收到坐标(如室内)时,您将丢失信息,但作为交换,将根据您的要求减少来自错误映射位置的“噪音”

  • 使用“snap to roads”API。有一个免费版本,使用名为的开放街道地图数据,当使用docker或自己构建源代码(详细信息见链接)托管(本地或云中)时提供后端

    curl”http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?步骤=真


  • 此请求将返回一个“捕捉”到最近道路的位置。有多种选项,例如优先考虑高速公路等。然后,您可以放弃不在“路径”上的点用户以前很快就换到了4公里以外的道路上,然后又回来了,这是不可能的。

    请告诉我们您尝试了什么,并用代码向我们展示preferably@kkarakk,我需要从设备获取连续的位置更新,以便计算行驶的距离,并使用折线在谷歌地图中显示用户行驶的路径ine。一切正常。我面临的唯一问题是,很少有位置是错误的,类似于此——“知道为什么它给出了错误的位置…”可能是基于网络的位置(?)如果GPS定位暂时丢失(?),那么你可以检查提供商并忽略它们。“…以及如何消除它?”只接受基于GPS的位置并实施某种过滤。在谈论GPS时,经常提到“卡尔曼过滤”。我想固件已经做了一些。或者可能是“伪造的”根据与前一个位置的距离和用户实际行驶的合理预期最大速度,可能会拒绝该位置。4 km/s,不太可能发生。:)@Joshua只要看一眼你的内容,我就可以知道这些错误的位置是手机失去gps连接时的手机发射塔/wifi位置。我认为您需要远离fusedlocationproviderclient,使用非google play位置解决方案(位置侦听器),这样您就可以只请求gps位置,而忽略不准确的wifi/celltower数据。fusedlocationprovider不提供细粒度控制,您将不得不在您的计算机上使用卡尔曼滤波器backend@kkarakk,是的,你的回答很有帮助。已接受:)请告诉我们您尝试了什么,并向我们显示代码preferably@kkarakk,我需要从设备获取连续的位置更新,以便计算行驶的距离,并使用多段线在谷歌地图中显示用户行驶的路径。一切正常。我面临的唯一问题是,很少有位置是错误的,类似于此——“知道为什么它给出了错误的位置…”可能是基于网络的位置(?)如果GPS定位暂时丢失(?),那么您可以检查提供商并忽略它们。“…以及如何消除我
    LocationManager locationManager = (LocationManager)
    getApplicationContext().getSystemService(LOCATION_SERVICE);  
    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_Provider);