Android Google Maps v2 - definir nível de zoom para myLocation

105

É possível alterar o nível de zoom para myLocation com a nova API do Google Maps v2?

Se você definir GoogleMap.setEnableMyLocation(true);, obterá um botão no mapa para encontrar sua localização.

Se você clicar nele, o mapa o levará à sua localização e aumentará o zoom em algum nível. Posso alterar esse zoom para menos ou mais?

entorpecido
fonte
1
você tem alguma ideia do nível de zoom do botão mylocation? Eu quero esse valor.
Prashanth Debbadwar,

Respostas:

211

É duvidoso que você possa alterá-lo ao clicar com o marcador myLocation padrão. No entanto, se você quiser que o aplicativo amplie automaticamente a sua localização assim que for encontrado, gostaria de verificar minha resposta a esta pergunta

Observe que a resposta que forneci não aumenta o zoom, mas se você modificar o método onLocationChanged para ser como o abaixo, poderá escolher o nível de zoom que desejar:

@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
fonte
146

Você também pode usar:

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

Basta alterar o valor do zoom para qualquer valor desejado entre o valor mínimo = 2,0 e o valor máximo = 21,0.

A API avisa que nem todos os locais têm blocos em valores próximos ou próximos ao zoom máximo.

Veja isto para obter mais informações sobre os métodos de zoom disponíveis no CameraUpdateFactory.

HeatfanJohn
fonte
1
Qual é o nível de zoom padrão ??
IgorGanapolsky
14 é o nível de zoom padrão
vin shaba
25

com localização - no novo SDK do GoogleMaps:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
itzhar
fonte
2
Existe uma diferença entre newLatLngZoom () e zoom () que muitas outras respostas referenciaram? No aplicativo, da perspectiva do usuário final, eles têm a mesma aparência.
portfólio
15

Solução ligeiramente diferente da HeatfanJohn, em que altero o zoom em relação ao nível de zoom atual:

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

Aqui estão os níveis aproximados de zoom e o que eles fazem:

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

então você poderia fazer algo assim para aumentar o zoom para o nível da rua, por exemplo (observe o "15f" abaixo é o nível da rua):

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

observação: apenas para que você saiba que diferentes locais podem ter diferentes níveis máximos de zoom. tente usar googleMap.maxZoomLevelse quiser obter os níveis máximo ou mínimo de zoom.

j2emanue
fonte
12

No método onMapReady ()

mude o zoomLevel para qualquer valor desejado.

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

você tem que escrever apenas uma linha em maps_activity.xml

map:cameraZoom="13"

Espero que isto resolva o seu problema...

Ankit Singh
fonte
2

Você pode usar

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

Até recentemente eu tive a mesma consulta ... de alguma forma, nenhum dos setmaxzoom mencionados acima ou map: cameraZoom = "13" não funcionou Então eu descobri que a dependência que usei era antiga, certifique-se de que sua dependência para o Google Maps está correto, este é o mais novo, use isso

compile 'com.google.android.gms:play-services:11.8.0' 
Siddarth Nyati
fonte
1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); Isso não terá efeito de animação.

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

Se você quiser salvar o zoom ou obtê-lo o tempo todo, você só precisa ligar para o seguinte

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(getlatitude(), getlongitude),zoom);
Varun Chandran
fonte
0

A maioria das respostas acima está obsoleta ou o zoom funciona mantendo a latitude e longitude atuais e não aplica o zoom no local exato que você deseja. Adicione o seguinte código ao seu 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);
}
xwaxes
fonte
0

Tentei com "mMap.animateCamera (CameraUpdateFactory.zoomTo (17.0f));" mas não funcionou para mim. Usei essa animação para dar um zoom no início.

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
fonte