Android Google Haritalar v2 - konumum için yakınlaştırma düzeyini ayarla


105

Yeni Google Maps API v2 ile myLocation için yakınlaştırma düzeyini değiştirmek mümkün mü?

Eğer ayarlarsan GoogleMap.setEnableMyLocation(true); , konumunuzu bulmak için harita üzerinde bir düğme görürsünüz.

Üzerine tıklarsanız, harita sizi konumunuza getirecek ve onu bir seviyeye yakınlaştıracaktır. Bu yakınlaştırmayı daha az veya daha fazla olacak şekilde değiştirebilir miyim?


1
konum düğmesinin yakınlaştırma seviyesi hakkında bir fikriniz var mı? Bu değeri istiyorum.
Prashanth Debbadwar

Yanıtlar:


211

Varsayılan myLocation Marker ile tıklamayla değiştirebileceğiniz şüphelidir. Bununla birlikte, uygulamanın bulunduğunuz yere otomatik olarak yakınlaştırmasını isterseniz, bu soruya verdiğim yanıtı kontrol ederim.

Sağladığım cevabın yakınlaştırmadığını unutmayın, ancak onLocationChanged yöntemini aşağıdaki gibi değiştirirseniz, istediğiniz yakınlaştırma seviyesini seçebilirsiniz:

@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

Ayrıca kullanabilirsiniz:

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

Yakınlaştırma değerini minimum değer = 2.0 ve maksimum değer = 21.0 arasında istenen herhangi bir değere değiştirmek için.

API, tüm konumların maksimum yakınlaştırmada veya buna yakın değerlerde döşemelere sahip olmadığı konusunda uyarır.

Bkz bu mevcut yakınlaştırma yöntemleri hakkında daha fazla bilgi için CameraUpdateFactory.


1
Varsayılan yakınlaştırma düzeyi nedir?
IgorGanapolsky

14, varsayılan yakınlaştırma düzeyidir
vin shaba

25

konumla - yeni GoogleMaps SDK'sında:

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

2
NewLatLngZoom () ve zoom () arasında diğer birçok yanıtın başvurduğu bir fark var mı? Uygulamada, son kullanıcı açısından bunlar aynı görünüyor.
portfoliobuilder

15

Yakınlaştırmayı mevcut yakınlaştırma düzeyine göre değiştirdiğim HeatfanJohn'dan biraz farklı bir çözüm:

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

15

Yaklaşık yakınlaştırma seviyeleri ve yaptıkları şunlardır :

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

Örneğin, sokak düzeyine yakınlaştırmak için şuna benzer bir şey yapabilirsiniz (aşağıdaki "15f" nin sokak düzeyi olduğuna dikkat edin):

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

not: farklı konumların farklı maksimum yakınlaştırma düzeylerine sahip olabileceğini bilmeniz için. googleMap.maxZoomLevelmaksimum veya minimum yakınlaştırma seviyelerini elde etmek istiyorsanız kullanmayı deneyin .


12

OnMapReady () Yönteminde

zoomLevel değerini istediğiniz herhangi bir değere değiştirin.

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

2

maps_activity.xml'de yalnızca bir satır yazmanız gerekir

map:cameraZoom="13"

Umarım bu sorununuzu çözer ...


2

Kullanabilirsiniz

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

1

Son zamanlarda bile aynı sorguya sahiptim .... biraz yukarıda belirtilen setmaxzoom veya başka hiçbir harita: cameraZoom = "13" işe yaramadı Bu yüzden kullandığım bağımlılığın eski olduğunu buldum, lütfen google haritalarına bağımlılığınızdan emin olun doğru mu bu en yeni kullanım bu

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


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

Yakınlaştırmayı kaydetmek veya her zaman elde etmek istiyorsanız, yalnızca aşağıdakileri aramanız gerekir.

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

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

0

Yukarıdaki yanıtların çoğu ya kullanımdan kaldırılmıştır ya da yakınlaştırma mevcut enlem ve boylamı koruyarak çalışır ve tam olarak istediğiniz konuma yakınlaştırmaz. Aşağıdaki kodu onMapReady () yönteminize ekleyin .

@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));" ile denedim; ama benim için işe yaramadı. Bu yüzden başlangıçta yakınlaştırmak için bu animasyonu kullandım.

LatLng loc = new LatLng(33.8688, 151.2093);
mMap.addMarker(new MarkerOptions().position(loc).title("Sydney"));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 18), 5000, null);
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.