изменить тип карты при изменении масштаба в Google Maps - PullRequest
1 голос
/ 21 апреля 2020

Я разрабатываю приложение Android, которое должно использовать Google Maps.

Я использовал этот код для отслеживания изменения масштаба (здесь ссылка )

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

Но в этом случае спутниковая карта перезагружается при малейшем сдвиге камеры.

Как загрузить область определенного размера, чтобы карта не загружалась непрерывно?

1 Ответ

0 голосов
/ 21 апреля 2020

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

public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {

    private GoogleMap mGoogleMap;

    ...
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mGoogleMap = googleMap;

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

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...