Android Google Maps v2: establecer el nivel de zoom para myLocation


105

¿Es posible cambiar el nivel de zoom de myLocation con la nueva API de Google Maps v2?

Si lo configura GoogleMap.setEnableMyLocation(true);, obtendrá un botón en el mapa para encontrar su ubicación.

Si hace clic en él, el mapa lo llevará a su ubicación y lo acercará a algún nivel. ¿Puedo cambiar este zoom para que sea menor o mayor?


1
¿Tiene alguna idea del nivel de zoom del botón de mi ubicación? Quiero ese valor.
Prashanth Debbadwar

Respuestas:


211

Es dudoso que pueda cambiarlo al hacer clic con el marcador myLocation predeterminado. Sin embargo, si desea que la aplicación se acerque automáticamente a su ubicación una vez que la encuentre, verificaría mi respuesta a esta pregunta.

Tenga en cuenta que la respuesta que proporcioné no se acerca, pero si modifica el método onLocationChanged para que sea como el siguiente, puede elegir el nivel de zoom que desee:

@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

También puedes usar:

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

Para simplemente cambiar el valor de zoom a cualquier valor deseado entre el valor mínimo = 2.0 y el valor máximo = 21.0.

La API advierte que no todas las ubicaciones tienen mosaicos con valores cercanos al zoom máximo.

Consulte esto para obtener más información sobre los métodos de zoom disponibles en el CameraUpdateFactory.


1
¿Cuál es el nivel de zoom predeterminado?
IgorGanapolsky

14 es el nivel de zoom predeterminado
vin shaba

25

con ubicación - en el nuevo SDK de GoogleMaps:

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

2
¿Hay alguna diferencia entre newLatLngZoom () y zoom () a la que se han referido muchas otras respuestas? En la aplicación, desde la perspectiva del usuario final, tienen el mismo aspecto.
portfoliobuilder

15

Solución ligeramente diferente a la de HeatfanJohn, donde cambio el zoom relativamente al nivel de zoom actual:

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

15

Estos son los niveles de zoom aproximados y lo que hacen:

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

por lo que podría hacer algo como esto para hacer zoom al nivel de la calle, por ejemplo (tenga en cuenta que el "15f" a continuación es el nivel de la calle):

 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))

nota: solo para que sepa que las diferentes ubicaciones pueden tener diferentes niveles de zoom máximo. intente usar googleMap.maxZoomLevelsi desea obtener los niveles de zoom máximo o mínimo.


12

En el método onMapReady ()

cambie el zoomLevel a cualquier valor deseado.

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

2

tienes que escribir solo una línea en maps_activity.xml

map:cameraZoom="13"

Espero que esto resuelva tu problema...


2

Puedes usar

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

1

Incluso recientemente tuve la misma consulta ... de alguna manera, ninguno de los setmaxzoom o map: cameraZoom = "13" mencionados anteriormente no funcionó. Así que descubrí que la dependencia que usé era antigua, por favor asegúrese de que su dependencia para los mapas de Google es correcto este es el uso más nuevo este

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

1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); Esto no tendrá efecto de animación.


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

Si desea guardar el zoom u obtenerlo todo el tiempo, solo necesita llamar al siguiente

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

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

0

La mayoría de las respuestas anteriores están obsoletas o el zoom funciona conservando la latitud y longitud actuales y no se acerca a la ubicación exacta que desea. Agregue el siguiente código a su método 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

Intenté con "mMap.animateCamera (CameraUpdateFactory.zoomTo (17.0f));" pero no funcionó para mí. Así que usé esta animación para acercarme al inicio.

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.