TileOverlay # getTile начинается с уровня масштабирования 3 - PullRequest
0 голосов
/ 07 октября 2018

Я пытаюсь создать Карту с помощью пользовательских плиток, используя Google Maps Android SDK.Я проверил TileOverlayDemoActivity android-samples Github репозитория.

Согласно документации на уровне Zoom 0 одно изображениебудет запрошено, на уровне масштабирования 1 всего 4 изображения и так далее.В настоящее время я сталкиваюсь с проблемой, что сразу после загрузки карты TileProvider#getTitle вызывается с уровнем масштабирования 3 , и у меня нет возможности уменьшить масштаб.Даже если я показываю элементы управления масштабированием, «-» отключено.

То, что я пробовал

Я подумал, что это может быть связано с Camera, поэтому я попытался вызвать следующий

map.moveCamera(CameraUpdateFactory.zoomTo(0.0f));

К сожалению, это не имеет никакого эффекта.То же самое касается следующего

map.setMinZoomPreference(0);

В настоящее время я не знаю, в чем может быть проблема.

Следуя моему коду.По сути, это то же самое, что и в связанной демонстрационной активности. Я только что изменил UrlTileProvider на свой собственный.

@Override
public void onMapReady(GoogleMap map) {
    map.setMapType(GoogleMap.MAP_TYPE_NONE);
    map.setMinZoomPreference(0);
    map.getUiSettings().setZoomControlsEnabled(true);
    map.moveCamera(CameraUpdateFactory.zoomTo(0.0f));

    TileProvider tileProvider = new TileProvider() {
        @Override
        public Tile getTile(int x, int y, int zoom) {
            String name = "tile_" + Integer.toString(zoom) + "_" + Integer.toString(x) + "_" + Integer.toString(y);
            Resources resources = getResources();
            final int resourceId = resources.getIdentifier(name, "drawable", getPackageName());

            Drawable d = getResources().getDrawable(resourceId);
            Bitmap bitmap = ((BitmapDrawable) d).getBitmap();
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            byte[] bitmapdata = stream.toByteArray();

            return new Tile(256, 256, bitmapdata);
        }
    };

    mapTiles = map.addTileOverlay(new TileOverlayOptions().tileProvider(tileProvider));
}

Возможно, стоит упомянуть, что map.getCameraPosition() возвращает:

CameraPosition{target=lat/lng: (0.0,0.0), zoom=2.0, tilt=0.0, bearing=0.0}

tl; dr

Как установить на карте уровень масштабирования 0?

Редактировать

В соответствии с комментарием и ответом я попытался активировать Lite Mode и установитьУровень масштабирования через XML:

<fragment
    android:id="@+id/map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    map:cameraZoom="1"
    map:mapType="normal"
    class="com.google.android.gms.maps.SupportMapFragment" />

К сожалению, без какого-либо эффекта.Он все еще начинает запрашивать на уровне масштабирования 3.

1 Ответ

0 голосов
/ 08 октября 2018

Кажется невозможным установить уровень масштабирования в 0, поскольку минимальный уровень масштабирования составляет 1 из документации :

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

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

также из документации:

Примечание: Из-за размера и плотности экрана некоторые устройства могут неподдерживать самые низкие уровни масштабирования.Используйте GoogleMap.getMinimumZoomLevel(), чтобы получить минимально возможный уровень масштабирования для карты.Если вам нужно показать весь мир в окне просмотра, может быть лучше использовать облегченный режим .

Итак, используйте облегченный режим , чтобы отобразитьвесь мир в окне просмотра.

...