我想在活動開始時縮放到用戶的當前位置。我有兩個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