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.