Android Google Maps v2 - setel tingkat zoom untuk myLocation

105

Apakah mungkin mengubah tingkat zoom untuk myLocation dengan Google Maps API v2 yang baru?

Jika Anda mengatur GoogleMap.setEnableMyLocation(true);, Anda mendapatkan tombol di peta untuk menemukan lokasi Anda.

Jika Anda mengekliknya, peta akan membawa Anda ke lokasi Anda dan memperbesarnya ke beberapa tingkat. Dapatkah saya mengubah zoom ini menjadi lebih kecil atau lebih?

bodoh
sumber
1
apakah Anda tahu tentang tingkat zoom tombol mylocation? Saya ingin nilai itu.
Prashanth Debbadwar

Jawaban:

211

Diragukan Anda dapat mengubahnya dengan mengklik dengan default myLocation Marker. Namun, jika Anda ingin aplikasi secara otomatis memperbesar lokasi Anda setelah ditemukan, saya akan memeriksa jawaban saya untuk pertanyaan ini.

Perhatikan bahwa jawaban yang saya berikan tidak memperbesar, tetapi jika Anda memodifikasi metode onLocationChanged menjadi seperti di bawah ini, Anda dapat memilih tingkat zoom yang Anda suka:

@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
sumber
146

Anda juga bisa menggunakan:

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

Untuk hanya mengubah nilai zoom ke nilai yang diinginkan antara nilai minimum = 2.0 dan nilai maksimum = 21.0.

API memperingatkan bahwa tidak semua lokasi memiliki petak pada nilai pada atau mendekati zoom maksimum.

Lihat ini untuk informasi lebih lanjut tentang metode zoom yang tersedia di CameraUpdateFactory.

HeatfanJohn
sumber
1
Apa tingkat zoom default ??
IgorGanapolsky
14 adalah tingkat zoom default
vin shaba
25

dengan lokasi - di GoogleMaps SDK baru:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
itzhar
sumber
2
Apakah ada perbedaan antara newLatLngZoom () dan zoom () yang dirujuk oleh banyak jawaban lain? Dalam aplikasi, dari perspektif pengguna akhir, ini terlihat sama.
portfoliobuilder
15

Solusi yang sedikit berbeda dari HeatfanJohn's, di mana saya mengubah zoom relatif ke level zoom saat ini:

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

Berikut adalah perkiraan tingkat zoom dan fungsinya:

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

jadi Anda bisa melakukan sesuatu seperti ini untuk memperbesar ke tingkat jalan, misalnya (perhatikan "15f" di bawah ini adalah tingkat jalan):

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

catatan: agar Anda tahu lokasi yang berbeda dapat memiliki tingkat zoom maks yang berbeda. coba gunakan googleMap.maxZoomLeveljika Anda ingin mendapatkan tingkat zoom maksimal atau minimum.

j2emanue
sumber
12

Dalam Metode onMapReady ()

ubah zoomLevel ke nilai yang diinginkan.

float zoomLevel = (float) 18.0;
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, zoomLevel));
Ankit Singh
sumber
2

Anda harus menulis hanya satu baris di maps_activity.xml

map:cameraZoom="13"

Saya harap ini akan menyelesaikan masalah Anda ...

Ankit Singh
sumber
2

Kamu bisa memakai

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

Bahkan saya baru-baru ini memiliki pertanyaan yang sama .... beberapa bagaimana tidak ada setmaxzoom yang disebutkan di atas atau yang lain map: cameraZoom = "13" tidak berfungsi Jadi saya menemukan bahwa ketergantungan yang saya gunakan sudah lama, pastikan ketergantungan Anda untuk peta google benar ini adalah penggunaan terbaru ini

compile 'com.google.android.gms:play-services:11.8.0' 
Siddarth Nyati
sumber
1

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); Ini tidak akan memiliki efek animasi.

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

Jika Anda ingin menyimpan zoom atau menggunakannya setiap saat, Anda hanya perlu memanggil yang berikut ini

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(getlatitude(), getlongitude),zoom);
Varun Chandran
sumber
0

Sebagian besar jawaban di atas sudah tidak berlaku lagi atau zoom berfungsi dengan mempertahankan lintang dan bujur saat ini dan tidak melakukan zoom ke lokasi yang Anda inginkan. Tambahkan kode berikut ke metode onMapReady () Anda .

@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);
}
xwaxes
sumber
0

Saya mencoba dengan "mMap.animateCamera (CameraUpdateFactory.zoomTo (17.0f));" tapi itu tidak berhasil untukku. Jadi saya menggunakan animasi ini untuk memperbesar awal.

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
sumber