Android Google Maps v2: imposta il livello di zoom per MyLocation


105

È possibile modificare il livello di zoom per myLocation con la nuova API di Google Maps v2?

Se imposti GoogleMap.setEnableMyLocation(true);, ottieni un pulsante sulla mappa per trovare la tua posizione.

Se fai clic su di esso, la mappa ti porterà alla tua posizione e la ingrandirà a un certo livello. Posso modificare questo zoom in modo che sia minore o maggiore?


1
hai idea del livello di zoom del pulsante di mia posizione? Voglio quel valore.
— Prashanth Debbadwar

Risposte:


211

È dubbio che tu possa cambiarlo al clic con il marcatore di myLocation predefinito. Tuttavia, se desideri che l'app ingrandisca automaticamente la tua posizione una volta trovata, controlla la mia risposta a questa domanda

Nota che la risposta che ho fornito non ingrandisce, ma se modifichi il metodo onLocationChanged in modo che sia simile a quello qui sotto, puoi scegliere il livello di zoom che preferisci:

@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

Puoi anche usare:

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

Per cambiare semplicemente il valore di zoom su qualsiasi valore desiderato tra il valore minimo = 2.0 e il valore massimo = 21.0.

L'API avverte che non tutte le posizioni hanno tessere con valori pari o prossimi allo zoom massimo.

Vedere questo per ulteriori informazioni sui metodi di zoom disponibili in CameraUpdateFactory.


1
Qual è il livello di zoom predefinito?
— IgorGanapolsky

14 è il livello di zoom predefinito
— vin shaba il

25

con posizione - nel nuovo SDK di GoogleMaps:

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

2
C'è una differenza tra newLatLngZoom () e zoom () a cui fanno riferimento molte altre risposte? Nell'app, dal punto di vista dell'utente finale, hanno lo stesso aspetto.
— portfoliobuilder

15

Soluzione leggermente diversa da quella di HeatfanJohn, in cui cambio lo zoom relativamente al livello di zoom corrente:

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

15

Ecco i livelli di zoom approssimativi e cosa fanno:

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

quindi potresti fare qualcosa del genere per eseguire lo zoom a livello stradale, ad esempio (nota che "15f" sotto è il livello della strada):

 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 per sapere che posizioni diverse possono avere diversi livelli di zoom massimo. prova a usare googleMap.maxZoomLevelse vuoi ottenere i livelli di zoom massimo o minimo.


12

Nel metodo onMapReady ()

modificare lo zoomLevel su qualsiasi valore desiderato.

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

2

devi scrivere solo una riga in maps_activity.xml

map:cameraZoom="13"

Spero che questo risolva il tuo problema ...


2

Puoi usare

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

1

Anche di recente ho avuto la stessa domanda ... in qualche modo nessuno dei setmaxzoom sopra menzionati oppure map: cameraZoom = "13" non ha funzionato Quindi ho scoperto che la dipendenza che ho usato era vecchia per favore assicurati che la tua dipendenza per google maps è corretto questo è l'ultimo utilizzo questo

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

1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); Questo non avrà effetto di animazione.


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

Se vuoi salvare lo zoom o ottenerlo tutto il tempo, devi solo chiamare quanto segue

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

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

0

La maggior parte delle risposte precedenti sono deprecate o lo zoom funziona mantenendo la latitudine e la longitudine correnti e non ingrandisce la posizione esatta che desideri. Aggiungi il seguente codice al tuo metodo 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

Ho provato con "mMap.animateCamera (CameraUpdateFactory.zoomTo (17.0f));" ma non ha funzionato per me. Quindi ho usato questa animazione per ingrandire all'inizio.

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.