Tutoriel Android : Géolocalisation du téléphone de l'utilisateur sur un GoogleMap V2 à travers un Marker

Dans un tuto précédent nous avons appris à intégrer GoogleMap V2  dans son application.

Cet article constitue la suite de ce précédent tutoriel et ne pourrait être réalisé qu'après avoir effectué le travail présenté par ce tuto : Tutoriel Android : intégrer Google Map V2 dans son app avec Android Studio .

Maintenant après avoir intégrer la Map dans son application nous allons apprendre à géolocaliser l’appareil de l'utilisateur sur la Map à travers un marker. Pour pouvoir géolocaliser l'utilisateur nous devons  implémenter l'interface OnLocationListener. Le code de notre activité expliquera mieux :



import android.Manifest;
import android.app.ProgressDialog;
import android.content.pm.PackageManager;
import android.location.Criteria;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.os.Bundle;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, LocationListener 
{

    GoogleMap mMap;
    LocationManager l;
    LatLng myLocatiion ;
    String providerFine;
    ProgressDialog p;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
       
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
        getLocation();
        if(myLocatiion == null)
        {

            p= new ProgressDialog(MapsActivity.this);
            p.setMessage("Chercher position");
            p.show();
        }

    }

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

}


    public void getLocation() {



        if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
        {
            ActivityCompat.requestPermissions(MapsActivity.this,new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},103);
        }
        else {
            l = (LocationManager) getSystemService(LOCATION_SERVICE);
            Criteria criteria = new Criteria();
            criteria.setAltitudeRequired(false);
            criteria.setBearingRequired(false);
            criteria.setCostAllowed(false);
            criteria.setPowerRequirement(Criteria.POWER_LOW);

            //  criteria.setAccuracy(Criteria.ACCURACY_FINE);
            providerFine = l.getBestProvider(criteria, true);
            l.requestLocationUpdates(providerFine, 0, 20, this);
        }
    }


    @Override
    public void onLocationChanged(Location location)
    {
myLocatiion=new LatLng(location.getLatitude(),location.getLongitude());
    p.dismiss();
        mMap.addMarker(new MarkerOptions().position(myLocatiion).title("Je suis ici"));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(myLocatiion,10));
    }

    @Override
    public void onStatusChanged(String s, int i, Bundle bundle) {

    }

    @Override
    public void onProviderEnabled(String s) {

    }

    @Override
    public void onProviderDisabled(String s) {

    }
}





Finalement il ne faut pas oublier d'ajouter les deux permissions suivantes à votre fichier manifest.xml:

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


Commentaires

Posts les plus consultés de ce blog

Premier tutoriel avec Arduino et Proteus ISIS

Login et password ,formulaire d'authentification sous android avec mysql et json

Connexion d'une application Android et une base de données externe Mysql avec web services php Json (opérations CRUD)