Je développe une application dans laquelle j'utilise des cartes. Je veux que dès que j'ouvre mon application, il devrait zoomer automatiquement pour montrer ma position sur la carte, mais actuellement ce qui se passe est que la carte est visible, mais l'emplacement actuel ne s'affiche pas automatiquement. Il est affiché après que je clique sur MyLocationButton en haut à droite. Alors, comment intégrer la fonctionnalité mentionnée ci-dessus dans mon codeComment afficher automatiquement ma carte à ma position actuelle en ouvrant mon application?
-2
A
Répondre
0
faire une classe dans votre projet et copier ce code
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.util.Log;
public class AppLocationService extends Service implements LocationListener {
protected LocationManager locationManager;
Location location;
private static final long min_distance_forupdate = 10;
private static final long min_time_to_update = 2 * 60 * 1000;
public AppLocationService(Context context) {
locationManager = (LocationManager) context.getSystemService(LOCATION_SERVICE);
}
public Location getLocation(String provider) {
if (locationManager.isProviderEnabled(provider)) {
try {
locationManager.requestLocationUpdates(provider, min_time_to_update, min_distance_forupdate, this);
if (locationManager != null) {
location = locationManager.getLastKnownLocation(provider);
return location;
}
}catch (SecurityException r){
Log.d("loc",r.getMessage());
}
return location;
}
return location;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
}
puis dans votre activité de cartes en cours d'utilisation de la fonction onMapReady ce code
mMap = googleMap;
appLocationService = new AppLocationService(MapsActivity.this);
Location newlocation = appLocationService.getLocation(LocationManager.NETWORK_PROVIDER);
if (newlocation != null) {
double curlat = newlocation.getLatitude();
double curlog = newlocation.getLongitude();
Log.d("latitude", curlat + " ----" + curlog);
LatLng sydney = new LatLng(curlat, curlog);
mMap.addMarker(new MarkerOptions().position(sydney).title("Your location"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
LatLng coordinate = new LatLng(curlat, curlog);
CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(coordinate, 5);
mMap.animateCamera(yourLocation);
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(curlat, curlog)) // Sets the center of the map to location user
.zoom(17) // Sets the zoom
.bearing(90) // Sets the orientation of the camera to east
.tilt(40) // Sets the tilt of the camera to 30 degrees
.build(); // Creates a CameraPosition from the builder
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
thanx beaucoup –
ami s'il vient toute question ne me demandez tachez ma réponse – Hami
la marque plz réponse – Hami