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

Ionic 2 : Envoie d'une image vers un serveur web à l'aide de PHP et Angular 2

Premier tutoriel avec Arduino et Proteus ISIS

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