dumazy
dumazy

Reputation: 14435

Android Google Maps v2 - set zoom level for myLocation

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?

Upvotes: 126

Views: 212552

Answers (13)

DiscDev
DiscDev

Reputation: 39052

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

Upvotes: 250

Keerthan Chand
Keerthan Chand

Reputation: 81

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

Upvotes: 1

Kenneth Murerwa
Kenneth Murerwa

Reputation: 888

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

Upvotes: 0

Shark Deng
Shark Deng

Reputation: 1058

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

Upvotes: 1

j2emanue
j2emanue

Reputation: 62519

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.

Upvotes: 24

pavel
pavel

Reputation: 1671

You can use

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

Upvotes: 2

Siddarth Nyati
Siddarth Nyati

Reputation: 161

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' 

Upvotes: 1

Ankit Singh
Ankit Singh

Reputation: 364

In onMapReady() Method

change the zoomLevel to any desired value.

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

Upvotes: 14

Ankit Singh
Ankit Singh

Reputation: 364

you have to write only one line in maps_activity.xml

map:cameraZoom="13"

I hope this will solve your problem...

Upvotes: 2

Varun Chandran
Varun Chandran

Reputation: 671

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

Upvotes: 0

HeatfanJohn
HeatfanJohn

Reputation: 7323

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.

Upvotes: 163

itzhar
itzhar

Reputation: 13031

with location - in new GoogleMaps SDK:

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

Upvotes: 33

Teo Inke
Teo Inke

Reputation: 5986

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

Upvotes: 15

Related Questions