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 :
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
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
Enregistrer un commentaire
Your comment will be reviewed by moderators