Gio*_*esi 3 android offline map
我想使用Google Maps API v2,但仅在后台显示一个虚拟地图。这是我正在使用的PNG文件的示例,称为“ dummy_map_tile.png”。我将其放置在资产文件夹中名为“ images”的目录下。尺寸为256x256像素。还尝试了JPG类似文件。

这是我的虚拟地图图块提供程序的代码,当然应该可以离线使用:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
一些日志记录(上面的代码中未显示)使我能够确保虚拟图块提供程序的构造正确,即没有发生IOException且mDummyTile不为null。
这是我在地图设置中设置图块提供程序的方式(mMap是我的GoogleMap对象,已正确初始化):
mMap.setMapType(GoogleMap.MAP_TYPE_NONE);
DummyTileProvider tileProvider = new DummyTileProvider(this);
mMap.addTileOverlay(new TileOverlayOptions().tileProvider(tileProvider));
Run Code Online (Sandbox Code Playgroud)
不幸的是,地图根本没有显示。永远不会调用getTile方法。不过,我在地图上绘制的所有标记和其他内容均能正常工作。如果我删除上面的三行代码,从而使用默认的图块提供程序,则所有显示效果都很好,显示了标准的Google地图(仅在在线模式下)。谁能给我有用的提示?
磁贴提供者没有错。只是代码其余部分中的一个错误,碰巧clear()在map对象上调用方法,因此从地图上删除了tile提供程序。不过,我希望虚拟磁贴提供程序的这个示例可以有用,所以我将其保留在此处。
| 归档时间: |
|
| 查看次数: |
978 次 |
| 最近记录: |