Android Google Maps v2 - Zoomstufe für myLocation einstellen

104

Ist es möglich, die Zoomstufe für myLocation mit der neuen Google Maps API v2 zu ändern?

Wenn Sie festlegen GoogleMap.setEnableMyLocation(true);, erhalten Sie eine Schaltfläche auf der Karte, um Ihren Standort zu finden.

Wenn Sie darauf klicken, bringt Sie die Karte zu Ihrem Standort und zoomt ihn auf eine bestimmte Ebene. Kann ich diesen Zoom so ändern, dass er kleiner oder größer ist?

dumm
quelle
1
Haben Sie eine Vorstellung von der Zoomstufe der Mylocation-Schaltfläche? Ich möchte diesen Wert.
Prashanth Debbadwar

Antworten:

211

Es ist zweifelhaft, ob Sie es beim Klicken mit dem Standard-myLocation-Marker ändern können. Wenn Sie jedoch möchten, dass die App Ihren Standort automatisch vergrößert, sobald er gefunden wurde, würde ich meine Antwort auf diese Frage überprüfen

Beachten Sie, dass die von mir angegebene Antwort nicht vergrößert wird. Wenn Sie jedoch die onLocationChanged-Methode so ändern, dass sie der folgenden entspricht, können Sie eine beliebige Zoomstufe auswählen:

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

Sie können auch verwenden:

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

Ändern Sie einfach den Zoomwert auf einen beliebigen Wert zwischen Minimalwert = 2,0 und Maximalwert = 21,0.

Die API warnt, dass nicht an allen Standorten Kacheln mit Werten bei oder nahe dem maximalen Zoom vorhanden sind.

Sehen Sie diese für weitere Informationen über Zoom - Methoden zur Verfügung , in der CameraUpdateFactory.

HeatfanJohn
quelle
1
Was ist die Standard-Zoomstufe?
IgorGanapolsky
14 ist die Standard-
Zoomstufe
25

mit Standort - im neuen GoogleMaps SDK:

mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(chLocation,14));
itzhar
quelle
2
Gibt es einen Unterschied zwischen newLatLngZoom () und zoom (), auf den viele andere Antworten verwiesen haben? In der App sehen diese aus Sicht des Endbenutzers gleich aus.
Portfoliobuilder
15

Etwas andere Lösung als bei HeatfanJohn, bei der ich den Zoom relativ zur aktuellen Zoomstufe ändere:

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

Hier sind die ungefähren Zoomstufen und was sie tun:

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

Sie könnten also so etwas tun, um beispielsweise auf Straßenebene zu zoomen (beachten Sie, dass "15f" unten Straßenebene ist):

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

Hinweis: Nur damit Sie wissen, dass verschiedene Standorte unterschiedliche maximale Zoomstufen haben können. Versuchen Sie zu verwenden, googleMap.maxZoomLevelwenn Sie die maximale oder minimale Zoomstufe erhalten möchten.

j2emanue
quelle
12

In der onMapReady () -Methode

Ändern Sie die Zoomstufe auf einen beliebigen Wert.

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

Sie müssen nur eine Zeile in maps_activity.xml schreiben

map:cameraZoom="13"

Ich hoffe das wird dein Problem lösen ...

Ankit Singh
quelle
2

Sie können verwenden

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

Sogar ich hatte kürzlich die gleiche Abfrage ... einige, wie keine der oben genannten setmaxzoom oder sonst map: cameraZoom = "13" nicht funktioniert Also fand ich, dass die Abhängigkeit, die ich verwendet habe, alt war, stellen Sie bitte sicher, dass Ihre Abhängigkeit für Google Maps ist richtig das ist die neueste verwendung dies

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

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15)); Dies hat keinen Animationseffekt.

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

Wenn Sie den Zoom speichern oder ständig abrufen möchten, müssen Sie nur Folgendes aufrufen

int zoom = mMap.getCameraPosition().zoom;

//To set that just use

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

Die meisten der oben genannten Antworten sind entweder veraltet oder der Zoom behält den aktuellen Breiten- und Längengrad bei und zoomt nicht genau auf den gewünschten Ort. Fügen Sie Ihrer onMapReady () -Methode den folgenden Code hinzu .

@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);
}
xwachse
quelle
0

Ich habe es mit "mMap.animateCamera (CameraUpdateFactory.zoomTo (17.0f))" versucht. aber es hat bei mir nicht funktioniert. Also habe ich diese Animation zum Vergrößern beim Start verwendet.

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
quelle