Android Google Maps v2 - установить уровень масштабирования для myLocation

Можно ли изменить уровень масштабирования для myLocation с помощью нового Google Maps API v2? Если вы установите GoogleMap.setEnableMyLocation(true); Вы получаете кнопку на карте, чтобы найти ваше местоположение. Если вы нажмете на нее, карта приведет вас к вашему местоположению и увеличит масштаб до некоторого уровня. Могу ли я изменить этот зум, чтобы он был меньше или больше?

10 ответов

Решение

Сомнительно, что вы можете изменить его по клику с помощью маркера 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));
    }
}

Вы также можете использовать:

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

Чтобы просто изменить значение масштабирования на любое желаемое значение между минимальным значением =2,0 и максимальным значением =21,0.

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

Смотрите это для получения дополнительной информации о методах масштабирования, доступных в CameraUpdateFactory,

С местоположением - в новом GoogleMaps SDK:

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

Вот приблизительные уровни масштабирования и что они делают:

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

так что вы можете сделать что-то вроде этого, чтобы увеличить масштаб до уровня улицы, например:

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

Немного другое решение, чем у HeatfanJohn, где я изменяю масштаб относительно текущего уровня масштабирования:

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

В методе onMapReady()

измените zoomLevel на любое желаемое значение.

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

Вы должны написать только одну строку в maps_activity.xml

map:cameraZoom="13"

Я надеюсь, что это решит вашу проблему...

Ты можешь использовать

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

Даже у меня недавно был такой же запрос.... некоторые, как ни один из вышеупомянутых setmaxzoom или map:cameraZoom="13" не работал. Так что я обнаружил, что зависимость, которую я использовал, была старой, пожалуйста, убедитесь, что ваша зависимость от карт Google правильно, это новейшее использование этого

compile 'com.google.android.gms:play-services:11.8.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);

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(currentPlace,15));Эффект анимации не будет.

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