我创建的应用程序与谷歌地图一起使用,它可以与谷歌地图服务一起使用。但是出现了一个问题。 当我请求当前位置有时它工作正常并返回确切的当前位置,但有时它返回最后一个当前位置 我不在的地方 谁能为我提供解决方案 这是代码
private GoogleApiClient mLocationclient;
GoogleMap mMap;
// connect client to the map by take his location
mLocationclient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mLocationclient.connect();
// end connect
//获取当前位置
public LatLng getCurrentLocation(Context context, GoogleMap mMaps,GoogleApiClient mlocationclient){
LatLng ll=null;
Location currentLocation= LocationServices.FusedLocationApi.getLastLocation(mlocationclient);
if(currentLocation==null)
Toast.makeText(context,"could not connect",Toast.LENGTH_SHORT).show();
else {
ll=new LatLng(
currentLocation.getLatitude(),
currentLocation.getLongitude()
);
}
return ll;
}
答案 0 :(得分:3)
您正在呼叫getLastLocation();
,它将返回您的GPS设备上次获取位置的时间。
如果您想强制设备获取位置,请尝试:
lm.requestSingleUpdate(LocationManager.GPS_PROVIDER, this, null);
Location loc = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
lat = loc.getLatitude();
lng = loc.getLongitude();
此外,您可以查看此参考资料以获取更多信息。 requestSingleUpdate
答案 1 :(得分:0)
Google地图使用上一个已知位置,因为它没有确切的当前位置。 GPS需要时间来定位用户的确切位置,因此应用程序使用之前的纬度和经度,直到GPS得到修复。
点击此链接:https://developer.android.com/training/location/index.html