user5475558
user5475558

Reputation:

Can't see my current location, the location button doesn't appear

I'm developing an app that will show my current location in map. I read about it for current location I need to add following line in my code, and after it the location button must appear. But it doesn't work. Could you help me?

mMap.setMyLocationEnabled(true);

Here is my code.

public class MapsActivity extends FragmentActivity implements   OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        // Obtain the SupportMapFragment and get notified when the map is ready    to be used.
        SupportMapFragment mapFragment = (SupportMapFragment)  getSupportFragmentManager()
            .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

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

        // Add a marker in Sydney and move the camera
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions()
                .position(sydney)
                .title("Marker in MyLocation")
        );

        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 40));
        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
            return;
        }
        mMap.setMyLocationEnabled(true);
    }
}

Android Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.hakobm.currentlocation">

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>  
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>    
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!-- Google Play Services -->
        <meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

        <meta-data
            android:name="com.google.android.geo.API_KEY"
            android:value="@string/google_maps_key" />

        <activity
            android:name=".MapsActivity"
            android:label="@string/title_activity_maps">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Upvotes: 1

Views: 1867

Answers (2)

adjuremods
adjuremods

Reputation: 2998

You got to remember that

You can use the My Location layer and the My Location button to provide your user with their current position on the map.

Before enabling the My Location layer, you must ensure that you have the required runtime location permission. You can check my answer from a related SO question and How can I show current location on a Google Map for more information.

Upvotes: 2

Ishant
Ishant

Reputation: 158

Try out:
mMap.getUiSettings().setMyLocationButtonEnabled(true);

Upvotes: 0

Related Questions