Map not loading with current location after user grants permission

I have a problem where this code picks up the use location but the map is not loading. All I get is a blue screen with a marker in the middle. My guess is that it's displaying a (0.00,0.00) location. The strange thing is that it works fine in the simulator but not on an actual device

public class Post_location extends FragmentActivity implements OnMapReadyCallback {

private GoogleMap mMap;
private GPSTracker gpsTracker;

String taskType;
String taskTitle;
String taskDescription;

String cameFrom = "nil";
String taskLocationCity = "nil";
String taskLocationAddress= "";
String taskLocationProvince= "";
String taskLocationPostal= "";


String receiveNotification;
String task1, task2, task3, task4, task5, task6, task7, task8;
String email;
String distance;
String cameFromMenu;

Double latitude = null;
Double longitude = null;
LatLng userLocation;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.post_location);




    gpsTracker = new GPSTracker(this);
   // getUserPermission();


    Dexter.withActivity(this)
            .withPermission(Manifest.permission.ACCESS_FINE_LOCATION)
            .withListener(new PermissionListener() {
                @Override
                public void onPermissionGranted(PermissionGrantedResponse response) {

                    if (gpsTracker.canGetLocation) {

                        gpsTracker.getLocation();
                        userLocation = new LatLng(gpsTracker.getLatitude(), gpsTracker.getLongitude());
                         adjustMap(userLocation);
                        getGeocode(userLocation);
                    } else {
                        gpsTracker.showSettingsAlert();
                    }
                }

                @Override
                public void onPermissionDenied(PermissionDeniedResponse response) {
                    Toast.makeText(Post_location.this, getString(R.string.post_location_needLocation), Toast.LENGTH_LONG).show();
                    gpsTracker.showSettingsAlert();
                    return;
                }

                @Override
                public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
                    token.continuePermissionRequest();
                }
            }).check();






SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);






}

public void next(View view) {
//Code

    }






}







public void selectLocation(View view) {

    mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

        @Override
        public void onMapClick(LatLng latLng) {

            Log.d("mapClicked", "map was clicked");
            MarkerOptions markerOptions = new MarkerOptions();
            markerOptions.position(latLng);
            markerOptions.title(getString(R.string.post_location_taskLocation));
            mMap.clear();
            mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
            mMap.addMarker(markerOptions);
            userLocation = latLng;
            getGeocode(latLng);


        }
    });


    Toast.makeText(this, getString(R.string.post_location_pressMap), Toast.LENGTH_LONG).show();
}



public void  getLocation(View view) throws IOException {
    //Get current location from last known
    Log.d("location1", "checkmappermission");

    getUserPermission();



}







@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
if (mMap !=  null) {
LatLng latLng = new LatLng(gpsTracker.getLatitude(), gpsTracker.getLongitude());
mMap.addMarker(new MarkerOptions().position(latLng).title(getString(R.string.post_location_taskLocation)));
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 15));

Log.d("mapReady",latLng.toString());


if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
    // TODO: Consider calling
    //    ActivityCompat#requestPermissions
    // here to request the missing permissions, and then overriding
    //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
    //                                          int[] grantResults)
    // to handle the case where the user grants the permission. See the documentation
    // for ActivityCompat#requestPermissions for more details.
    return;
}
mMap.setMyLocationEnabled(true);

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

    @Override
    public void onMapClick(LatLng latLng) {

        Log.d("mapClicked", "map was clicked");
        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.position(latLng);
        markerOptions.title(getString(R.string.post_location_taskLocation));
        mMap.clear();
        mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
        mMap.addMarker(markerOptions);
        userLocation = latLng;
        getGeocode(latLng);


    }
});




}


}






public void getGeocode(LatLng latLng) {






    //Get geocode information
    Log.d("qqq", "ok1");
    Geocoder geocoder = new Geocoder(getApplicationContext(), Locale.getDefault());

    latitude = latLng.latitude;
    longitude = latLng.longitude;

    Log.d("qqq1111Lat", Double.toString(latitude));



    try {
        //  List<android.location.Address> listAddresses = geocoder.getFromLocation(latLng.latitude,latLng.longitude, 1);

        List<Address> listAddresses;
        listAddresses = geocoder.getFromLocation(latitude, longitude, 1);

        Log.d("qqqlistadress", listAddresses.toString());


        if (listAddresses != null && listAddresses.size() > 0) {

            if (listAddresses.get(0).getLocality() != null) {
                taskLocationCity = listAddresses.get(0).getLocality();
                Log.i("city" , taskLocationCity);
            } else {
                taskLocationCity = "Other";
            }

            if (listAddresses.get(0).getAddressLine(0) != null) {
                taskLocationAddress = listAddresses.get(0).getAddressLine(0);
                Log.i("address" , taskLocationAddress);
            } else {
                taskLocationAddress = "Other";
            }

            if (listAddresses.get(0).getAdminArea() != null) {
                taskLocationProvince = listAddresses.get(0).getAdminArea();
                Log.i("province" , taskLocationProvince);
            } else {
                taskLocationProvince = "Other";
            }

            if (listAddresses.get(0).getPostalCode() != null) {
                taskLocationPostal = listAddresses.get(0).getPostalCode();
                Log.i("postal" , taskLocationPostal);
            } else {
                taskLocationPostal = "Other";
            }

            latitude = latLng.latitude;
            longitude = latLng.longitude;

            Log.d("qqq", "ok2");



            try {
                GeopointHelper.taskLocation = new ParseGeoPoint(latLng.latitude, latLng.longitude);

            } catch(Error e) {
                Log.d("qqq error1", e.getLocalizedMessage().toString());
            }


        }

    } catch (IOException e) {
        e.printStackTrace();
        Log.d("qqq error2", e.getLocalizedMessage().toString());
    }




    latitude = latLng.latitude;
    longitude = latLng.longitude;

    Log.d("qqq", "ok2");

    try {
        GeopointHelper.taskLocation = new ParseGeoPoint(latLng.latitude, latLng.longitude);



    } catch(Error e) {
        Log.d("qqq error1", e.getLocalizedMessage().toString());
    }

}



public void showDialog() {

    LayoutInflater layoutInflaterAndroid = LayoutInflater.from(this);
    View mView = layoutInflaterAndroid.inflate(R.layout.add_city_dialog_box, null);
    AlertDialog.Builder alertDialogBuilderUserInput = new AlertDialog.Builder(this);
    alertDialogBuilderUserInput.setView(mView);





    final EditText input_taskLocationCity = (EditText) mView.findViewById(R.id.inputCity);



    alertDialogBuilderUserInput
            .setCancelable(false)
            .setPositiveButton(getString(R.string.save), new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialogBox, int id) {

                    taskLocationCity = input_taskLocationCity.getText().toString();



                }
            });

    //   .setNegativeButton("Cancel",
    //             new DialogInterface.OnClickListener() {
    //                 public void onClick(DialogInterface dialogBox, int id) {
    //                     dialogBox.cancel();
    //               }
    //            });

    AlertDialog alertDialogAndroid = alertDialogBuilderUserInput.create();
    alertDialogAndroid.show();

}


public void getUserPermission(){
    //Get Permission
    Dexter.withActivity(this)
            .withPermission(Manifest.permission.ACCESS_FINE_LOCATION)
            .withListener(new PermissionListener() {
                @Override
                public void onPermissionGranted(PermissionGrantedResponse response) {
                    Log.d("adjustmap", "1");
                    if (gpsTracker.canGetLocation) {
                        Log.d("adjustmap", "2");
                        gpsTracker.getLocation();
                        userLocation = new LatLng(gpsTracker.getLatitude(), gpsTracker.getLongitude());


                        Log.d("adjustmap3333333", userLocation.toString());

                        adjustMap(userLocation);
                        getGeocode(userLocation);
                    } else {
                        Log.d("adjustmap", "3");
                        gpsTracker.showSettingsAlert();

                    }
                }

                @Override
                public void onPermissionDenied(PermissionDeniedResponse response) {
                    Toast.makeText(Post_location.this, getString(R.string.post_location_needLocation), Toast.LENGTH_LONG).show();
                    gpsTracker.showSettingsAlert();
                    return;
                }

                @Override
                public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
                    token.continuePermissionRequest();
                }
            }).check();
}

public void adjustMap(LatLng latLng) {








    Log.d("adjustmap1", "start");
if ( mMap != null) {
    Log.d("adjustmap2", latLng.toString());
    mMap.clear();
    mMap.addMarker(new MarkerOptions().position(latLng).title(getString(R.string.post_location_taskLocation)));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
    mMap.addMarker(new MarkerOptions().position(latLng).title("odd-job location"));
    mMap.animateCamera(CameraUpdateFactory.zoomTo(15.0f));

    }

}


@Override
protected void onResume() {
    super.onResume();

    Log.d("adjustmap2", "onResume1");
    if (mMap != null) {
        Log.d("adjustmap2", "onResume2");
        gpsTracker.getLocation();
        LatLng latLng3 = new LatLng(gpsTracker.getLatitude(), gpsTracker.getLongitude());

        Log.d("adjustmap3", latLng3.toString());

        mMap.addMarker(new MarkerOptions().position(latLng3).title(getString(R.string.post_location_taskLocation)));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng3, 15));




        mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

            @Override
            public void onMapClick(LatLng latLng) {

                Log.d("mapClicked", "map was clicked");
                MarkerOptions markerOptions = new MarkerOptions();
                markerOptions.position(latLng);
                markerOptions.title(getString(R.string.post_location_taskLocation));
                mMap.clear();
                mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
                mMap.addMarker(markerOptions);
                userLocation = latLng;
                getGeocode(latLng);


            }
        });



    }
}





}

And this is my Activity layout

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
class="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.chop.jf.chop.Post_location"

>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="left|top"
    android:layout_marginTop="20dp"
    android:background="@android:color/holo_blue_dark"
    android:onClick="selectLocation"
    android:padding="10dp"
    android:paddingRight="30dp"
    android:text="@string/post_location_select"
    android:textColor="@android:color/white" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right|top"
    android:layout_marginTop="20dp"
    android:background="@android:color/holo_blue_dark"
    android:onClick="getLocation"
    android:padding="10dp"
    android:paddingRight="30dp"
    android:text="@string/post_location_current"
    android:textColor="@android:color/white" />

<Button
    android:layout_width="250dp"
    android:layout_height="52dp"
    android:layout_gravity="center|bottom"
    android:layout_marginBottom="30dp"
    android:layout_marginTop="20dp"
    android:background="@android:color/holo_blue_dark"
    android:onClick="next"
    android:text="@string/post_location_continue"
    android:textColor="@android:color/white" />


</fragment>