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?


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

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.


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

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

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.


12

W metodzie onMapReady ()

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

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

2

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

map:cameraZoom="13"

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


2

Możesz użyć

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

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' 

1

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


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

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

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);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.