125

Is it possible to change the zoom level for myLocation with the new Google Maps API v2?

If you set GoogleMap.setEnableMyLocation(true);, you get a button on the map to find your location.

If you click on it, then the map will bring you to your location and zoom it in to some level. Can I change this zoom to be less or more?

Yudhishthir Singh
  • 2,941
  • 2
  • 23
  • 42
dumazy
  • 13,857
  • 12
  • 66
  • 113

13 Answers13

247

It's doubtful you can change it on click with the default myLocation Marker. However, if you would like the app to automatically zoom in on your location once it is found, I would check out my answer to this question

Note that the answer I provided does not zoom in, but if you modify the onLocationChanged method to be like the one below, you can choose whatever zoom level you like:

@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
  • 38,652
  • 20
  • 117
  • 133
  • Be careful using `animateCamera()` in your `onMapReady()`, this may lead map lag with lite yellow background. For map init it is better to use `moveCamera()` (same signature) – QuarK Jan 27 '23 at 14:22
164

You can also use:

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

To just change the zoom value to any desired value between minimum value=2.0 and maximum value=21.0.

The API warns that not all locations have tiles at values at or near maximum zoom.

See this for more information about zoom methods available in the CameraUpdateFactory.

Reza-S4
  • 1,042
  • 1
  • 18
  • 36
HeatfanJohn
  • 7,143
  • 2
  • 35
  • 41
33

with location - in new GoogleMaps SDK:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
itzhar
  • 12,743
  • 6
  • 56
  • 63
  • 2
    Is there a difference between newLatLngZoom() and zoom() which a lot of other answers have referenced? In app, from end user perspective, these look the same. – portfoliobuilder May 26 '17 at 23:29
23

Here are the approximate zoom levels and what they do :

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

so you could do something like this to zoom to street level for example (note the "15f" below is street level) :

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

note: just so you know different locations can have different max zoom levels. try to use googleMap.maxZoomLevel if you want to get the max or min zoom levels.

j2emanue
  • 60,549
  • 65
  • 286
  • 456
15

Slightly different solution than HeatfanJohn's, where I change the zoom relatively to the current zoom level:

// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));
Teo Inke
  • 5,928
  • 4
  • 38
  • 37
14

In onMapReady() Method

change the zoomLevel to any desired value.

float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));
Ankit Singh
  • 354
  • 3
  • 5
2

you have to write only one line in maps_activity.xml

map:cameraZoom="13"

I hope this will solve your problem...

Ankit Singh
  • 354
  • 3
  • 5
2

You can use

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

Even i recently had the same query....some how none of the above mentioned setmaxzoom or else map:cameraZoom="13" did not work So i found that the depenedency which i used was old please make sure your dependency for google maps is correct this is the newest use this

compile 'com.google.android.gms:play-services:11.8.0' 
Pang
  • 9,564
  • 146
  • 81
  • 122
Siddarth Nyati
  • 141
  • 3
  • 5
1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); This is will not have animation effect.

Shark Deng
  • 960
  • 9
  • 26
1

I tried with "mMap.animateCamera( CameraUpdateFactory.zoomTo( 17.0f ) );" but it didn't work for me. So I used this animation for zooming in on start.

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
0
Location locaton;
double latitude = location.getlatitude;
double longitude = location.getlongitude;

If you want to save the zoom or get it all the time,you just need to call the following

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(getlatitude(), getlongitude),zoom);
Long Ranger
  • 5,888
  • 8
  • 43
  • 72
Varun Chandran
  • 647
  • 9
  • 23
0

Most of the answers above are either deprecated or the zoom works by retaining the current latitude and longitude and does not zoom to the exact location you want it to. Add the following code to your onMapReady() method.

@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);
}
Kenneth Murerwa
  • 778
  • 12
  • 16