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?


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

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.


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

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

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.


12

Dalam Metode onMapReady ()

ubah zoomLevel ke nilai yang diinginkan.

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

2

Anda harus menulis hanya satu baris di maps_activity.xml

map:cameraZoom="13"

Saya harap ini akan menyelesaikan masalah Anda ...


2

Kamu bisa memakai

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

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' 

1

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


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

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

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);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.