gpt4 book ai didi

android - 虚拟 map 图 block 提供程序不工作(未调用 getTile)

转载 作者:搜寻专家 更新时间:2023-11-01 08:01:05 25 4
gpt4 key购买 nike

我想使用 google maps api v2,但在背景中只显示一个虚拟 map 。这是我正在使用的 PNG 文件的示例,名为“dummy_map_tile.png”。我把它放在 Assets 文件夹中,在名为“images”的目录下。它的大小是 256x256 像素。还尝试了一个 JPG 类似文件。

My dummy map tile:

这是我的虚拟 map 图 block 提供程序的代码,它当然应该可以离线工作:

public class DummyTileProvider implements TileProvider {

protected Tile mDummyTile = null;

public DummyTileProvider(Context context) {
InputStream inputStream = null;
ByteArrayOutputStream outputStream = null;
try {
String tileFilename = "images/dummy_map_tile.png";
inputStream = context.getResources().getAssets().open(tileFilename);
outputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[2048];
int count;
while((count = inputStream.read(buffer)) != -1)
outputStream.write(buffer, 0, count);
outputStream.flush();
mDummyTile = new Tile(256, 256, outputStream.toByteArray());
}
catch (IOException e) {
mDummyTile = null;
}
finally {
if (inputStream != null)
try {inputStream.close();} catch (IOException e) {}
if (outputStream != null)
try {outputStream.close();} catch (IOException e) {}
}
}

@Override
public Tile getTile(int x, int y, int zoom) {
return mDummyTile;
}
}

一些日志记录(上面的代码中未显示)允许我确保虚拟图 block 提供程序正确构造,即没有发生 IOException,并且 mDummyTile 不为空。

这是我在 map 设置中设置图 block 提供程序的方式(mMap 是我的 GoogleMap 对象,已正确初始化):

    mMap.setMapType(GoogleMap.MAP_TYPE_NONE);
DummyTileProvider tileProvider = new DummyTileProvider(this);
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(tileProvider));

不幸的是, map 根本不显示。永远不会调用 getTile 方法。不过,我在 map 上绘制的所有标记和其他内容都可以正常工作。如果我删除上面的三行代码,从而使用默认的 tile 提供程序,一切都会完美运行,显示标准的谷歌地图(仅在在线模式下)。谁能给我一个有用的提示?

最佳答案

tile 提供者没有任何问题。这只是其余代码中的一个错误,碰巧调用了 map 对象上的方法 clear(),从而从 map 中删除了图 block 提供程序。不过,我希望这个虚拟磁贴提供程序的示例有用,所以我将其留在这里。

关于android - 虚拟 map 图 block 提供程序不工作(未调用 getTile),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21165489/

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