123 votes

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

Est-il possible de modifier le niveau de zoom de 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 position.

Si vous cliquez dessus, la carte vous amènera à votre emplacement et effectuera un certain niveau de zoom. Puis-je modifier ce zoom pour qu'il soit plus ou moins important ?

243voto

DiscDev Points 8087

Il est peu probable que vous puissiez le modifier en un clic avec le marqueur myLocation par défaut. Toutefois, si vous souhaitez que l'application effectue un zoom automatique sur votre emplacement une fois celui-ci trouvé, je vous invite à consulter ma réponse à la question suivante cette question

Notez que la réponse que j'ai fournie ne permet pas d'effectuer un zoom avant, mais si vous modifiez la méthode onLocationChanged pour qu'elle ressemble à celle présentée ci-dessous, vous pouvez choisir le niveau de zoom que vous souhaitez :

@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));
    }
}

165voto

HeatfanJohn Points 1988

Vous pouvez également utiliser :

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

Il suffit de modifier la valeur du zoom à la valeur souhaitée entre la valeur minimale=2,0 et la valeur maximale=21,0.

L'API prévient que tous les emplacements ne disposent pas de tuiles à des valeurs égales ou proches du zoom maximal.

Voir este pour plus d'informations sur les méthodes de zoom disponibles dans l CameraUpdateFactory .

32voto

itzhar Points 36

Avec localisation - dans le nouveau SDK GoogleMaps :

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

23voto

j2emanue Points 3456

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

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

Vous pourriez donc faire quelque chose comme ceci pour zoomer au niveau de la rue par exemple (notez que le "15f" ci-dessous est le 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))

note : pour votre information, différents endroits peuvent avoir différents niveaux de zoom maximum. essayez d'utiliser googleMap.maxZoomLevel si vous voulez obtenir les niveaux de zoom maximum ou minimum.

15voto

Teo Inke Points 176

Solution légèrement différente de celle de HeatfanJohn, où je modifie le zoom en fonction du niveau de zoom actuel :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X