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路由器提供的最近的手机发射塔/位置数据(谷歌会自动跟踪),在谷歌没有强大位置地图的地方(城市中心以外的任何地方)给出极不正确的结果 您有两个选择:
curl”http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?步骤=真
此请求将返回“捕捉”到最近道路的位置。有多种选择,例如优先考虑高速公路等。然后,您可以丢弃不在用户以前所在的“路径”上的点,因为快速切换到4公里以外的道路,然后再返回的可能性不大。FusedLocationProvider可能会在设备的gps连接关闭时给出错误的结果(或者没有足够的卫星在“视图”中提供准确的数据)。它将使用wifi路由器提供的最近的基站/位置数据(谷歌会自动跟踪),在谷歌没有强大的位置地图存在的地方(城市中心以外的任何地方)给出极不正确的结果 您有两个选择:
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);