Я пытаюсь создать Карту с помощью пользовательских плиток, используя 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.