Android Mapy Google v2 - ustaw poziom powiększenia dla myLocation

105

Czy można zmienić poziom powiększenia myLocation za pomocą nowego interfejsu API Map Google w wersji 2?

Jeśli ustawisz GoogleMap.setEnableMyLocation(true);, na mapie pojawi się przycisk umożliwiający znalezienie Twojej lokalizacji.

Jeśli go klikniesz, mapa przeniesie Cię do Twojej lokalizacji i przybliży ją do pewnego poziomu. Czy mogę zmienić to powiększenie na mniejsze lub większe?

dumazy
źródło
1
czy masz pojęcie o poziomie powiększenia przycisku mylokacji? Chcę tej wartości.
Prashanth Debbadwar

Odpowiedzi:

211

Wątpliwe jest, aby można go było zmienić jednym kliknięciem za pomocą domyślnego markera myLocation. Jeśli jednak chcesz, aby aplikacja automatycznie powiększała Twoją lokalizację po jej znalezieniu, sprawdzę moją odpowiedź na to pytanie

Zwróć uwagę, że udzielona przeze mnie odpowiedź nie powiększa, ale jeśli zmodyfikujesz metodę onLocationChanged, aby była podobna do poniższej, możesz wybrać dowolny poziom powiększenia:

@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
źródło
146

Możesz także użyć:

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

Wystarczy zmienić wartość zoomu na dowolną żądaną wartość między wartością minimalną = 2,0 a wartością maksymalną = 21,0.

Interfejs API ostrzega, że ​​nie wszystkie lokalizacje mają kafelki o wartości zbliżonej do maksymalnego powiększenia.

Zobacz to, aby uzyskać więcej informacji na temat metod powiększania dostępnych w CameraUpdateFactory.

HeatfanJohn
źródło
1
Jaki jest domyślny poziom powiększenia?
IgorGanapolsky
14 to domyślny poziom powiększenia
vin shaba
25

z lokalizacją - w nowym SDK GoogleMaps:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
itzhar
źródło
2
Czy istnieje różnica między newLatLngZoom () a zoom (), do których odnosi się wiele innych odpowiedzi? W aplikacji z punktu widzenia użytkownika końcowego wyglądają one tak samo.
portfoliobuilder
15

Nieco inne rozwiązanie niż HeatfanJohn's, gdzie zmieniam zoom w stosunku do aktualnego poziomu zoomu:

// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));
Teo Inke
źródło
15

Oto przybliżone poziomy powiększenia i ich działanie:

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

więc możesz zrobić coś takiego, na przykład, aby powiększyć do poziomu ulicy (zwróć uwagę, że „15f” poniżej to poziom ulicy):

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

uwaga: żebyś wiedział, że różne lokalizacje mogą mieć różne maksymalne poziomy powiększenia. spróbuj użyć, googleMap.maxZoomLeveljeśli chcesz uzyskać maksymalny lub minimalny poziom powiększenia.

j2emanue
źródło
12

W metodzie onMapReady ()

zmień zoomLevel na dowolną żądaną wartość.

float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));
Ankit Singh
źródło
2

musisz napisać tylko jedną linię w maps_activity.xml

map:cameraZoom="13"

Mam nadzieję, że to rozwiąże Twój problem ...

Ankit Singh
źródło
2

Możesz użyć

    CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()));
    CameraUpdate zoom = CameraUpdateFactory.zoomTo(12);
pavel
źródło
1

Nawet ja ostatnio miałem to samo zapytanie ... trochę jak żadna z wyżej wymienionych setmaxzoom lub map: cameraZoom = "13" nie działa Więc stwierdziłem że zależność, której użyłem była stara proszę się upewnić, że twoja zależność od map google jest poprawne, to jest najnowsze użycie tego

compile 'com.google.android.gms:play-services:11.8.0' 
Siddarth Nyati
źródło
1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); Nie będzie to miało efektu animacji.

Shark Deng
źródło
0
Location locaton;
double latitude = location.getlatitude;
double longitude = location.getlongitude;

Jeśli chcesz zapisać powiększenie lub mieć go cały czas, wystarczy zadzwonić pod następujący numer

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(getlatitude(), getlongitude),zoom);
Varun Chandran
źródło
0

Większość powyższych odpowiedzi jest albo przestarzała, albo zoom działa, zachowując aktualną szerokość i długość geograficzną i nie powiększa do dokładnej lokalizacji, w której chcesz. Dodaj następujący kod do metody 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);
}
woski
źródło
0

Próbowałem z "mMap.animateCamera (CameraUpdateFactory.zoomTo (17.0f));" ale to nie zadziałało dla mnie. Więc użyłem tej animacji do powiększenia na początku.

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
źródło