[android] #3759 - Add SupportMapFragment, test app integration, cleanup old fragment implementation

This commit is contained in:
Tobrun
2016-02-01 16:45:41 +01:00
parent 7694eebe88
commit a699690c16
9 changed files with 201 additions and 27 deletions

View File

@@ -52,6 +52,11 @@ public class MapboxConstants {
*/
public static final double MINIMUM_DIRECTION = 0;
/**
* Fragment Argument Key for MapboxMapOptions
*/
public static final String FRAG_ARG_MAPBOXMAPOPTIONS = "MapboxMapOptions";
// Save instance state keys
public static final String STATE_CAMERA_POSITION = "cameraPosition";
public static final String STATE_ZOOM_ENABLED = "zoomEnabled";

View File

@@ -1,16 +1,15 @@
package com.mapbox.mapboxsdk.maps;
import android.app.Fragment;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.mapbox.mapboxsdk.R;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
import com.mapbox.mapboxsdk.utils.ApiAccess;
import com.mapbox.mapboxsdk.maps.MapView;
/**
* Fragment wrapper around a {@link MapView}.
@@ -28,21 +27,6 @@ import com.mapbox.mapboxsdk.maps.MapView;
*/
public class MapFragment extends Fragment {
//
// Static members
//
// Tag used for logging
private static final String TAG = "MapFragment";
// Argument used for configuration
private static final String ARGS_MAPBOXMAP_OPTIONS = "MapboxMapOptions";
//
// Instance members
//
// The map
private MapView mMap;
private OnMapReadyCallback mMapReadyCallback;
@@ -53,7 +37,7 @@ public class MapFragment extends Fragment {
public static MapFragment newInstance(MapboxMapOptions mapboxMapOptions) {
final MapFragment mapFragment = new MapFragment();
Bundle bundle = new Bundle();
bundle.putParcelable(ARGS_MAPBOXMAP_OPTIONS, mapboxMapOptions);
bundle.putParcelable(MapboxConstants.FRAG_ARG_MAPBOXMAPOPTIONS, mapboxMapOptions);
mapFragment.setArguments(bundle);
return mapFragment;
}

View File

@@ -0,0 +1,104 @@
package com.mapbox.mapboxsdk.maps;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.mapbox.mapboxsdk.R;
import com.mapbox.mapboxsdk.constants.MapboxConstants;
import com.mapbox.mapboxsdk.utils.ApiAccess;
/**
* Fragment wrapper around a {@link MapView}.
* <p>
* A Map component in an app. This fragment is the simplest way to place a map in an application.
* It's a wrapper around a view of a map to automatically handle the necessary life cycle needs.
* Being a fragment, this component can be added to an activity's layout or can dynamically be added
* using a FragmentManager.
* </p>
* <p>
* To get a reference to the MapView, use {@link #getMapAsync(OnMapReadyCallback)}}
* </p>
*
* @see #getMapAsync(OnMapReadyCallback)
*/
public class SupportMapFragment extends Fragment {
private MapView mMap;
private OnMapReadyCallback mMapReadyCallback;
public static SupportMapFragment newInstance(){
return new SupportMapFragment();
}
public static SupportMapFragment newInstance(MapboxMapOptions mapboxMapOptions) {
final SupportMapFragment mapFragment = new SupportMapFragment();
Bundle bundle = new Bundle();
bundle.putParcelable(MapboxConstants.FRAG_ARG_MAPBOXMAPOPTIONS, mapboxMapOptions);
mapFragment.setArguments(bundle);
return mapFragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
mMap = (MapView) inflater.inflate(R.layout.fragment_mapview, container, false);
mMap.setAccessToken(ApiAccess.getToken(inflater.getContext()));
mMap.onCreate(savedInstanceState);
return mMap;
}
@Override
public void onStart() {
super.onStart();
mMap.onStart();
}
@Override
public void onResume() {
super.onResume();
mMap.onResume();
if(mMapReadyCallback!=null){
mMapReadyCallback.onMapReady(mMap.getMapboxMap());
}
}
@Override
public void onPause() {
super.onPause();
mMap.onPause();
}
@Override
public void onSaveInstanceState(@NonNull Bundle outState) {
mMap.onSaveInstanceState(outState);
super.onSaveInstanceState(outState);
}
@Override
public void onStop() {
super.onStop();
mMap.onStop();
}
@Override
public void onLowMemory() {
mMap.onLowMemory();
super.onLowMemory();
}
@Override
public void onDestroyView() {
super.onDestroyView();
mMap.onDestroy();
mMap = null;
}
@NonNull
public void getMapAsync(@NonNull OnMapReadyCallback onMapReadyCallback){
mMapReadyCallback = onMapReadyCallback;
}
}