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?

Dumazy
la source
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));
    }
}
DiscDev
la source
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.

HeatfanJohn
la source
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));
Itzhar
la source
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));
Teo Inke
la source
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.

j2emanue
la source
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));
Ankit Singh
la source
2

vous devez écrire une seule ligne dans maps_activity.xml

map:cameraZoom="13"

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

Ankit Singh
la source
2

Vous pouvez utiliser

    CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()));
    CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);
Pavel
la source
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' 
Siddarth Nyati
la source
1

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

Requin Deng
la source
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);
Varun Chandran
la source
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);
}
xwaxes
la source
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);
Keerthan Chand
la source