package com.mobmonkey.mobmonkeyandroid.fragments;
import org.json.JSONException;
import org.json.JSONObject;
import android.location.Location;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;
import com.mobmonkey.mobmonkeyandroid.R;
import com.mobmonkey.mobmonkeyandroid.utils.MMFragment;
import com.mobmonkey.mobmonkeyandroid.utils.MMSupportMapFragment;
import com.mobmonkey.mobmonkeysdk.utils.MMSDKConstants;
import com.mobmonkey.mobmonkeysdk.utils.MMLocationListener;
import com.mobmonkey.mobmonkeysdk.utils.MMLocationManager;
/**
* @author Dezap, LLC
*
*/
public class LocationDetailsMapFragment extends MMFragment {
private static final String TAG = "LocationResultMapFragment: ";
private FragmentManager fragmentManager;
private MMSupportMapFragment smfLocation;
private GoogleMap googleMap;
/*
* (non-Javadoc)
* @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
fragmentManager = getFragmentManager();
View view = inflater.inflate(R.layout.fragment_locationdetails_map, container, false);
return view;
}
/* (non-Javadoc)
* @see android.support.v4.app.Fragment#onResume()
*/
@Override
public void onResume() {
super.onResume();
getMMSupportMapFragment();
}
/* (non-Javadoc)
* @see android.support.v4.app.Fragment#onPause()
*/
@Override
public void onPause() {
super.onPause();
try {
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.remove(smfLocation);
transaction.commitAllowingStateLoss();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* (non-Javadoc)
* @see android.support.v4.app.Fragment#onDestroyView()
*/
@Override
public void onDestroyView() {
super.onDestroyView();
}
/* (non-Javadoc)
* @see com.mobmonkey.mobmonkey.utils.MMFragment#onFragmentBackPressed()
*/
@Override
public void onFragmentBackPressed() {
}
/**
* @throws JSONException
*
*/
private void getMMSupportMapFragment() {
smfLocation = (MMSupportMapFragment) fragmentManager.findFragmentByTag(MMSDKConstants.MMSUPPORT_MAP_FRAGMENT_TAG);
if(smfLocation == null) {
smfLocation = new MMSupportMapFragment() {
/* (non-Javadoc)
* @see android.support.v4.app.Fragment#onActivityCreated(android.os.Bundle)
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
googleMap = smfLocation.getMap();
if(googleMap != null) {
try {
addToGoogleMap();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
};
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.lllocationdetailsmap, smfLocation, MMSDKConstants.MMSUPPORT_MAP_FRAGMENT_TAG);
fragmentTransaction.commit();
}
}
/**
*
* @throws JSONException
*/
private void addToGoogleMap() throws JSONException {
JSONObject jObj = new JSONObject(getArguments().getString(MMSDKConstants.KEY_INTENT_EXTRA_LOCATION_DETAILS));
LatLng currentLoc = new LatLng(MMLocationManager.getLocationLatitude(), MMLocationManager.getLocationLongitude());
LatLng resultLocLatLng = new LatLng(jObj.getDouble(MMSDKConstants.JSON_KEY_LATITUDE), jObj.getDouble(MMSDKConstants.JSON_KEY_LONGITUDE));
googleMap.addMarker(new MarkerOptions()
.position(resultLocLatLng)
.title(jObj.getString(MMSDKConstants.JSON_KEY_NAME))
.snippet(jObj.getString(MMSDKConstants.JSON_KEY_ADDRESS)));
googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLoc, 16));
googleMap.setMyLocationEnabled(true);
}
}