我想在活动开始时缩放到用户的当前位置。我有两个java类。一个是MapActivity.java,另一个是MapFragment.java。我正试图在MapFragment.java上完成这项工作。尝试在活动开始时获取当前位置
private Actvity activity;
private volatile GoogleMap googleMap;
GoogleApiClient mGoogleApiClient;
LocationRequest mLocationRequest;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = getActivity();
}
MapFragment.java/onMapReady;
@Override
public void onMapReady(GoogleMap map) {
googleMap = map;
mGoogleApiClient=new GoogleApiClient.Builder(activity)
.addApi(LocationServices.API)
.addConnectionCallbacks(activity)
.addOnConnectionFailedListener(activity)
.build();
mGoogleApiClient.connect();
}
在这种onMapReady,.addConnectionCallbacks(活性)和.addOnConnectionFailedListener(活性)是给像在图像中的警告;
在他们正在实施GoogleApiClient.ConnectionCallbacks和GoogleApiCleint.OnConnectionFailedListener不投在这之前我已经分析的事例。没有实施,我无法获得这些功能;
@Override
public void onConnected(Bundle bundle) {
mLocationRequest=LocationRequest.create();
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
mLocationRequest.setInterval(1000);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest,this);
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
而且我还得到LocationListeners的方法;
@Override
public void onLocationChanged(Location location) {
if(location == null){
Toast.makeText(this,"Cant get current location",Toast.LENGTH_LONG).show();
}
else{
LatLng ll= new LatLng(location.getLatitude(),location.getLongitude());
CameraUpdate update= CameraUpdateFactory.newLatLngZoom(ll,15);
mGoogleMap.animateCamera(update);
}
}
如果我在片段中手工实现它们,是否会导致任何问题?在片段活动中获取当前位置的正确方法是什么?
感谢您的解释! – dizel