2017-08-21 2 views
-2

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?

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)); 
+0

thanx beaucoup –

+0

ami s'il vient toute question ne me demandez tachez ma réponse – Hami

+0

la marque plz réponse – Hami