googleMap.getMyLocation(); cannot get current location

30,408

Solution 1

Try this...I hope this will be help to you

LocationManager locationManager = (LocationManager)
        getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();

Location location = locationManager.getLastKnownLocation(locationManager
        .getBestProvider(criteria, false));
double latitude = location.getLatitude();
double longitude = location.getLongitude();

Solution 2

This is my code for you, I hope this help you... edit it if you think, it isn't with correct sintaxis...

This work for android 4.x and 5.x and 6.x, I not test this in android 7

//I use this like global var to edit or get informacion about google map
GoogleMap gMap;

@Override
public void onMapReady(GoogleMap googleMap) {
    gMap = googleMap;

if (ActivityCompat.checkSelfPermission(Activity_Map.this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(Activity_Map.this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                        ActivityCompat.requestPermissions(Activity_Map.this,new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}, 1);
                    }else{
                        if(!gMap.isMyLocationEnabled())
                            gMap.setMyLocationEnabled(true);

                        LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
                        Location myLocation = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);

                        if (myLocation == null) {
                            Criteria criteria = new Criteria();
                            criteria.setAccuracy(Criteria.ACCURACY_COARSE);
                            String provider = lm.getBestProvider(criteria, true);
                            myLocation = lm.getLastKnownLocation(provider);
                        }

                        if(myLocation!=null){
                            LatLng userLocation = new LatLng(myLocation.getLatitude(), myLocation.getLongitude());
                            gMap.animateCamera(CameraUpdateFactory.newLatLngZoom(userLocation, 14), 1500, null);
                        }
                    }

}

Solution 3

getMyLocation() => this method is deprecated. You need to use LocationClient instead.

You can find informations about LocationClient and how to get current location here

Share:
30,408

Related videos on Youtube

user3506223
Author by

user3506223

Updated on September 11, 2020

Comments

  • user3506223
    user3506223 over 3 years

    i want to make a program to calculate the distance between some places to my current location, but my googleMap.getMyLocation(); doesnt work properly.

    googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
    googleMap.setMyLocationEnabled(true);   
    googleMap.getUiSettings().setCompassEnabled(false);
    mylocation = googleMap.getMyLocation();
    direction = new GMapV2Direction();
    
    LatLng from, to;
    from = new LatLng(-7.26071409, 112.80674726);
    for(int i=0; i<lat.length; i++){    
        to = new LatLng(lat[i], lon[i]);
        doc = direksi.getDocument(from, to, GMapV2Direction.MODE_DRIVING);
        distance[i] = (double)direction.getDistanceValue(doc) / 1000;
    }
    

    i saved the latitude and longitude of some places in lat[] and lon[]. LatLng 'from' is mylocation and 'to' is my destination places. the problem appear when i change

    from = new LatLng(-7.26071409, 112.80674726);
    to
    from = new LatLng(mylocation.getLatitude(), mylocation.getLongitude());
    

    i want to do the calculation without opening the googlemaps. the google maps will appear when i touch the map button as pop up window. so the calculation will happen without opening googlemap

    please help me

    • Alex DG
      Alex DG about 10 years
      getMyLocation(), this method is deprecated. use LocationClient instead.
    • Android_coder
      Android_coder about 10 years
      are you using google map v2?
    • user3506223
      user3506223 about 10 years
      @Alex i dont know how to use LocationClient. can you elaborate?
    • user3506223
      user3506223 about 10 years
      @Android yes i'm using google map v2 api
  • larsaars
    larsaars almost 4 years
    no it does not, since you don't even check getBestProvider and getLastKnownLocation to get null!