Android Google Maps v2 - Définir le niveau de zoom pour myLocation


105

Est-il possible de modifier le niveau de zoom pour myLocation avec la nouvelle API Google Maps v2?

Si vous définissez GoogleMap.setEnableMyLocation(true);, vous obtenez un bouton sur la carte pour trouver votre emplacement.

Si vous cliquez dessus, la carte vous amènera à votre emplacement et l'agrandira à un certain niveau. Puis-je changer ce zoom pour qu'il soit inférieur ou supérieur?


1
avez-vous une idée du niveau de zoom du bouton mylocation? Je veux cette valeur.
Prashanth Debbadwar le

Réponses:


211

Il est peu probable que vous puissiez le modifier en un clic avec le marqueur myLocation par défaut. Cependant, si vous souhaitez que l'application effectue automatiquement un zoom avant sur votre emplacement une fois qu'elle est trouvée, je vérifierais ma réponse à cette question

Notez que la réponse que j'ai fournie ne fait pas de zoom avant, mais si vous modifiez la méthode onLocationChanged pour qu'elle ressemble à celle ci-dessous, vous pouvez choisir le niveau de zoom de votre choix:

@Override
public void onLocationChanged(Location location) 
{
    if( mListener != null )
    {
        mListener.onLocationChanged( location );

        //Move the camera to the user's location and zoom in!
        mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location.getLatitude(), location.getLongitude()), 12.0f));
    }
}

146

Vous pouvez aussi utiliser:

mMap.animateCamera( CameraUpdateFactory.zoomTo( 17.0f ) );    

Pour simplement changer la valeur du zoom en n'importe quelle valeur souhaitée entre la valeur minimale = 2,0 et la valeur maximale = 21,0.

L'API avertit que tous les emplacements n'ont pas de tuiles à des valeurs égales ou proches du zoom maximum.

Consultez ceci pour plus d'informations sur les méthodes de zoom disponibles dans le CameraUpdateFactory.


1
Quel est le niveau de zoom par défaut ??
IgorGanapolsky

14 est le niveau de zoom par défaut
vin shaba

25

avec emplacement - dans le nouveau SDK GoogleMaps:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));

2
Y a-t-il une différence entre newLatLngZoom () et zoom () que beaucoup d'autres réponses ont référencée? Dans l'application, du point de vue de l'utilisateur final, ils se ressemblent.
portfoliobuilder

15

Solution légèrement différente de celle de HeatfanJohn, où je change le zoom par rapport au niveau de zoom actuel:

// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));

15

Voici les niveaux de zoom approximatifs et ce qu'ils font:

1: World
5: Landmass/continent
10: City
15: Streets
20: Buildings

vous pouvez donc faire quelque chose comme ceci pour zoomer au niveau de la rue par exemple (notez que le "15f" ci-dessous correspond au niveau de la rue):

 override fun onMapReady(googleMap: GoogleMap?) {
    googleMap?.mapType = GoogleMap.MAP_TYPE_NORMAL
    googleMap?.addMarker(MarkerOptions()
            .position(LatLng(37.4233438, -122.0728817))
            .title("cool place")

            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ROSE)))

    googleMap?.animateCamera(CameraUpdateFactory.newLatLngZoom(LatLng(37.4233438, -122.0728817), 15f))

Remarque: pour que vous sachiez que différents emplacements peuvent avoir différents niveaux de zoom maximum. essayez d'utiliser googleMap.maxZoomLevelsi vous souhaitez obtenir les niveaux de zoom maximum ou minimum.


12

Dans la méthode onMapReady ()

modifiez le zoomLevel sur n'importe quelle valeur souhaitée.

float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));

2

vous devez écrire une seule ligne dans maps_activity.xml

map:cameraZoom="13"

J'espère que cela résoudra votre problème...


2

Vous pouvez utiliser

    CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()));
    CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);

1

Même j'ai récemment eu la même requête .... certains comment aucun des setmaxzoom mentionnés ci-dessus ou autre carte: cameraZoom = "13" ne fonctionnait pas.J'ai donc trouvé que la dépendance que j'ai utilisée était ancienne, veuillez vous assurer que votre dépendance pour google maps est correct c'est la dernière utilisation

compile 'com.google.android.gms:play-services:11.8.0' 

1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); Cela n'aura pas d'effet d'animation.


0
Location locaton;
double latitude = location.getlatitude;
double longitude = location.getlongitude;

Si vous souhaitez enregistrer le zoom ou l'obtenir tout le temps, il vous suffit d'appeler ce qui suit

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(getlatitude(), getlongitude),zoom);

0

La plupart des réponses ci-dessus sont soit obsolètes, soit le zoom fonctionne en conservant la latitude et la longitude actuelles et ne fait pas de zoom sur l'emplacement exact que vous souhaitez. Ajoutez le code suivant à votre méthode onMapReady () .

@Override
public void onMapReady(GoogleMap googleMap) {
    //Set marker on the map
    googleMap.addMarker(new MarkerOptions().position(new LatLng(0.0000, 0.0000)).title("Marker"));
    //Create a CameraUpdate variable to store the intended location and zoom of the camera
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(new LatLng(0.0000, 0.0000), 13);
    //Animate the zoom using the animateCamera() method
    googleMap.animateCamera(cameraUpdate);
}

0

J'ai essayé avec "mMap.animateCamera (CameraUpdateFactory.zoomTo (17.0f));" mais cela n'a pas fonctionné pour moi. J'ai donc utilisé cette animation pour zoomer au démarrage.

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.