我尝试了Fused Location(GoogleApiClient),但在获取位置时不够准确,即使我要求新的位置,它也给出了我之前的位置。我请求了10次(以尽可能提高准确性),但在4-6次后它就停止请求了,而且这些位置信息非常不准确(误差为881米)。
另一方面,使用LocationManager时,它总能更或多或少地给出我的位置信息,从未无缘无故地停止工作,并且总体上更加稳定。
那么Fused Location比Location Manager更好在哪里呢?
LocationServices.FusedLocationApi.requestLocationUpdates(
mGoogleApiClient, mLocationRequest, this
);
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
mGoogleApiClient
);
而且您正在使用LocationRequest.PRIORITY_HIGH_ACCURACY
(GPS)。
Fused Location和Location Manager之间的主要区别在于后者不依赖于Google Play服务。
在新的手机上或者用户从未使用过google.maps获取方向时,融合定位无法工作。
要使融合定位正常工作,您必须要求用户打开一次Google地图并获取我的位置。但是一旦完成这个步骤,融合定位就是最好的选择。
但是对于任何应用程序中的位置查找,我们可以使用mylocation层,即使手机或用户从未接触过地图,也可以提供准确的结果。