gpt4 book ai didi

android - TileOverlay#getTile 从缩放级别 3 开始

转载 作者:行者123 更新时间:2023-11-29 23:30:53 25 4
gpt4 key购买 nike

我正在尝试使用 Google Maps Android SDK 构建带有自定义图 block 的 map 。我已经检查了 TileOverlayDemoActivityandroid-samples Github 存储库。

根据documentation在缩放级别 0 时,将请求单个图像,在缩放级别 1 时,总共需要 4 张图像,依此类推。目前我面临的问题是,在加载 map 后 立即 TileProvider#getTitle 调用缩放级别 3 并且没有办法让我缩小。即使我显示缩放控件,“-”也会被禁用。

我尝试过的

我认为它可能与 Camera 有关,所以我尝试调用以下命令

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

不幸的是,这没有任何效果。以下同样适用

map.setMinZoomPreference(0);

目前我不知道问题可能是什么。

按照我的代码。它与链接的演示 Activity 基本相同,我只是将 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;博士

如何将 map 设置为缩放级别 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 开始请求。

最佳答案

似乎无法将缩放级别设置为 0,因为最小缩放级别为 1 from documentation :

The following list shows the approximate level of detail you can expect to see at each zoom level:

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

也来自文档:

Note: Due to screen size and density, some devices may not support the lowest zoom levels. Use GoogleMap.getMinimumZoomLevel() to get the minimum zoom level possible for the map. If you need to show the entire world in the viewport, it may be better to use Lite Mode.

所以,使用 Lite Mode在视口(viewport)中显示整个世界。

关于android - TileOverlay#getTile 从缩放级别 3 开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52688761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com