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?

dumazy
fuente
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));
    }
}
DiscDev
fuente
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.

HeatfanJohn
fuente
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));
itzhar
fuente
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));
Teo Inke
fuente
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.

j2emanue
fuente
12

En el método onMapReady ()

cambie el zoomLevel a cualquier valor deseado.

float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));
Ankit Singh
fuente
2

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

map:cameraZoom="13"

Espero que esto resuelva tu problema...

Ankit Singh
fuente
2

Puedes usar

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

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

Tiburón Deng
fuente
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);
Varun Chandran
fuente
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);
}
xceras
fuente
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);
Keerthan Chand
fuente