Подтвердить что ты не робот

Прослушиватель уровня изображения в google maps v2 в android

Я разрабатываю приложение для Android, которое должно использовать Google Maps v2. Теперь я застрял в поиске, когда изменился масштаб карты. Может кто-нибудь мне помочь? Спасибо заранее.

4b9b3361

Ответ 1

Создайте реализацию из OnCameraChangeListener и передайте экземпляр в setOnCameraChangeListener() вашего GoogleMap. Ваш слушатель должен вызываться с помощью onCameraChange() всякий раз, когда пользователь меняет масштаб, центр или наклон. Вы узнаете новый уровень масштабирования от объекта CameraPosition, который вы передали.

Ответ 2

Если вы ищете, как определить, изменился ли уровень масштабирования с предыдущего уровня масштабирования, вот что я хотел бы предложить:

Определите переменную экземпляра, чтобы отслеживать предыдущий уровень масштабирования:

//Initialize to a non-valid zoom value
private float previousZoomLevel = -1.0f;

Кроме того, определите переменную экземпляра, чтобы узнать, масштабируется ли карта:

private boolean isZooming = false;

Когда вы настраиваете свой экземпляр GoogleMap, дайте ему OnCameraChangeListener...

//mMap is an instance of GoogleMap
mMap.setOnCameraChangeListener(getCameraChangeListener());

Теперь определите OnCameraChangeListener, который определит, изменился ли уровень масштабирования:

public OnCameraChangeListener getCameraChangeListener()
{
    return new OnCameraChangeListener() 
    {
        @Override
        public void onCameraChange(CameraPosition position) 
        {
            Log.d("Zoom", "Zoom: " + position.zoom);

            if(previousZoomLevel != position.zoom)
            {
                isZooming = true;
            }

            previousZoomLevel = position.zoom;
        }
    };
}

Теперь вы можете проверить значение isZooming, чтобы узнать, изменяете ли вы уровни масштабирования.

Обязательно установите

isZooming = false;

после того, как вы выполнили какое-либо действие, полагаясь на знание масштабирования карты.

Ответ 3

Поскольку предыдущие ответы основаны на OnCameraChangeListener и устарел, этот ответ основан на камере setOnCameraMoveListener.

В этом примере я изменяю свой Тип карты, когда пользователь меняет масштаб (используя элементы управления или пальцы и масштабирование). Если уровень масштабирования изменяется выше 18.0, тип карты изменяется на MAP_TYPE_HYBRIB, а если он меньше 18.0, тип карты изменяется на MAP_TYPE_NORMAL.

googleMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
    @Override
    public void onCameraMove() {
        CameraPosition cameraPosition = googleMap.getCameraPosition();
        if(cameraPosition.zoom > 18.0) {
            googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        } else {
            googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
        }
    }
});