package com.example.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.example.R;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapView;
import com.google.android.gms.maps.MapsInitializer;
import com.google.android.gms.maps.UiSettings;
import com.google.android.gms.maps.model.BitmapDescriptor;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.CameraPosition;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import org.alfonz.utility.VersionUtility;
public class ExampleFragment extends Fragment
{
private View mRootView;
private MapView mMapView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
mRootView = inflater.inflate(R.layout.fragment_example, container, false);
initMap();
mMapView = (MapView) mRootView.findViewById(R.id.fragment_example_map);
mMapView.onCreate(savedInstanceState);
return mRootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
setupMap();
bindData();
}
@Override
public void onResume()
{
super.onResume();
// map
if(mMapView != null) mMapView.onResume();
}
@Override
public void onPause()
{
super.onPause();
// map
if(mMapView != null) mMapView.onPause();
}
@Override
public void onDestroy()
{
super.onDestroy();
// map
if(mMapView != null) mMapView.onDestroy();
}
@Override
public void onLowMemory()
{
super.onLowMemory();
// map
if(mMapView != null) mMapView.onLowMemory();
}
@Override
public void onSaveInstanceState(Bundle outState)
{
// save current instance state
super.onSaveInstanceState(outState);
setUserVisibleHint(true);
// map
if(mMapView != null) mMapView.onSaveInstanceState(outState);
}
private void bindData()
{
// reference
GoogleMap map = ((MapView) mRootView.findViewById(R.id.fragment_example_map)).getMap();
// content
if(map != null)
{
BitmapDescriptor marker1 = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN);
BitmapDescriptor marker2 = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW);
BitmapDescriptor marker3 = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED);
BitmapDescriptor marker4 = BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher);
BitmapDescriptor[] markers = {marker1, marker2, marker3, marker4};
for(int i = 0; i < 16; i++)
{
map.addMarker(new MarkerOptions()
.position(new LatLng(49.194696 + 0.1 * Math.sin(i * Math.PI / 8), 16.608595 + 0.1 * Math.cos(i * Math.PI / 8)))
.title("Example " + i)
.icon(markers[i % 4])
);
}
}
}
private void initMap()
{
if(!VersionUtility.isSupportedOpenGlEs2(getActivity()))
{
Toast.makeText(getActivity(), R.string.global_map_fail_toast, Toast.LENGTH_LONG).show();
}
try
{
MapsInitializer.initialize(getActivity());
}
catch(Exception e)
{
e.printStackTrace();
}
}
private void setupMap()
{
// reference
GoogleMap map = ((MapView) mRootView.findViewById(R.id.fragment_example_map)).getMap();
// settings
if(map != null)
{
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
map.setMyLocationEnabled(true);
UiSettings settings = map.getUiSettings();
settings.setAllGesturesEnabled(true);
settings.setMyLocationButtonEnabled(true);
settings.setZoomControlsEnabled(true);
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(49.194696, 16.608595))
.zoom(11)
.bearing(0)
.tilt(30)
.build();
map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
}
}
}