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?


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

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.


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

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

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.


12

No método onMapReady ()

mude o zoomLevel para qualquer valor desejado.

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

2

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

map:cameraZoom="13"

Espero que isto resolva o seu problema...


2

Você pode usar

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

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' 

1

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


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

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

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);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.