Android Maps Google v2 - встановлення рівня масштабування для моєї локації


105

Чи можливо змінити масштаб для моєї локації за допомогою нового API Карт Google v2?

Якщо ви встановите GoogleMap.setEnableMyLocation(true); , ви отримаєте кнопку на карті, щоб знайти своє місцезнаходження.

Якщо ви натиснете на нього, карта приведе вас до вашого місцезнаходження та збільшить його до деякого рівня. Чи можу я змінити цей зум на менший або більше?


1
чи маєте ви уявлення про рівень масштабування кнопки мійлокації? Я хочу цю цінність.
Прашант Деббадвар

Відповіді:


211

Сумнівно, що ви можете змінити його при натисканні за допомогою типового маркера myLocation. Однак якщо ви хочете, щоб додаток автоматично збільшував ваше місцезнаходження, як тільки воно знайдене, я перевірив би свою відповідь на це запитання

Зауважте, що відповідь, яку я надав, не збільшує масштаб, але якщо ви модифікуєте метод onLocationChanged таким, як наведений нижче, ви можете вибрати будь-який рівень масштабування, який вам подобається:

@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

Ви також можете використовувати:

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

Просто змініть значення масштабу на будь-яке бажане значення між мінімальним значенням = 2,0 і максимальним значенням = 21,0.

API попереджає, що не у всіх місцях розміщення плиток має значення при максимальному масштабі або поблизу.

Дивіться це для отримання додаткової інформації про методи збільшення, доступні в CameraUpdateFactory.


1
Який рівень масштабування за замовчуванням ??
ІгорГанапольський

14 - рівень збільшення за замовчуванням
vin shaba

25

з розташуванням - у новому SDK GoogleMaps:

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

2
Чи є різниця між newLatLngZoom () та zoom (), на яку посилається багато інших відповідей? У програмі, з точки зору кінцевого користувача, вони виглядають однаково.
портфоліобудівник

15

Трохи інше рішення, ніж рішення HeatfanJohn, де я змінюю масштаб відносно поточного рівня збільшення:

// Zoom out just a little
map.animateCamera(CameraUpdateFactory.zoomTo(map.getCameraPosition().zoom - 0.5f));

15

Ось приблизний рівень масштабування та що вони роблять:

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

тож ви можете зробити щось подібне, щоб, наприклад, збільшити рівень вулиці (зверніть увагу, що "15f" нижче - рівень вулиці):

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

Примітка: так що ви знаєте, що різні місця можуть мати різні рівні максимального збільшення. спробуйте використовувати, googleMap.maxZoomLevelякщо ви хочете отримати максимальний або мінімальний рівні масштабування.


12

У методі onMapReady ()

змінити рівень масштабування на будь-яке бажане значення.

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

2

вам потрібно написати лише один рядок у maps_activity.xml

map:cameraZoom="13"

Сподіваюся, це вирішить вашу проблему ...


2

Можна використовувати

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

1

Навіть у мене нещодавно був той самий запит .... дещо, як жоден із згаданих вище setmaxzoom чи інша карта: cameraZoom = "13" не працює правильно це новітнє використання цього

compile 'com.google.android.gms:play-services:11.8.0' 

1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); Це не матиме анімаційного ефекту.


0
Location locaton;
double latitude = location.getlatitude;
double longitude = location.getlongitude;

Якщо ви хочете зберегти масштаб або отримати його постійно, вам просто потрібно зателефонувати за наступним

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(getlatitude(), getlongitude),zoom);

0

Більшість відповідей, наведених вище, або застарілі, або масштабування працює, зберігаючи поточну широту і довготу, і не збільшує масштаб до того місця, де ви хочете. Додайте наступний код у свій метод 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

Я спробував з "mMap.animateCamera (CameraUpdateFactory.zoomTo (17.0f));" але це не спрацювало для мене. Тому я використав цю анімацію для збільшення масштабу на старті.

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.