Сохраняйте плитки видимыми при загрузке TileOverlay Map API v2 Android

Я бы хотел, чтобы мой TileOverlay вел себя как настоящие Карты Google. Когда вы увеличиваете масштаб, плитка все еще видна, но пикселируется до тех пор, пока не будет загружена новая плитка.

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

Есть ли решение этой проблемы?

Ответ 1

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

@UiThread
private void preloadAllZoomLevels(final float zoomLevel) {
    if (zoomLevel == map.getMaxZoomLevel()) {
        map.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 7));
        mapFragmentContainer.animate().alpha(1f);
        return;
    }
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), zoomLevel));

    final float nextZoomLevel = zoomLevel + 1;
    map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
        @Override
        public void onMapLoaded() {
            preloadAllZoomLevels(nextZoomLevel);
        }
    });
}

Ответ 2

По сути, каждый раз, когда GoogleMap хочет нарисовать плитку для конкретной координаты - он просит вас предоставить эту плитку. Вы можете использовать либо статическую плиту (см. TileProvider), либо вы можете указать URL-адрес, поэтому GoogleMap отправляется на ваш веб-сервер и автоматически загружает эту плитку (см. UrlTileProvider)

Не знаю, это сработает для вас! Но вы можете делиться информацией о своих требованиях, если она не работает. Спасибо