osmdroid API解读(五)
osmdroid-android org.osmdroid.tileprovider.tilesource 包
1. ITileSource
瓦片源接口,用于获取一个瓦片源的信息
public interface ITileSource {
//瓦片源序号标识符
@Deprecated
int ordinal();
//瓦片源的名称
String name();
//获取瓦片的路径,文件路径可能事故文件系统中用于存储瓦片的路径,可以包含多个路径。
String getTileRelativeFilenameString(MapTile aTile);
//获取特殊路径下瓦片对用的图片对象
Drawable getDrawable(String aFilePath) throws LowMemoryException;
//获取输入流中对应的瓦片图片对象
Drawable getDrawable(InputStream aTileInputStream) throws LowMemoryException;
//获取该瓦片源中最小、最大的缩放等级
public int getMinimumZoomLevel();
public int getMaximumZoomLevel();
//获取瓦片中图片的像素值比如(256x256的图片返回256)
public int getTileSizePixels();
String getCopyrightNotice();
}
1.1 IStyledTileSource
有style属性的瓦片源可以实现这个接口。带有这个接口的瓦片源设置到tile provider,你需要使用clearTileCache()或setTileSource()
以清理tile provider在屏幕上仍然处于老的style的瓦片
public interface IStyledTileSource<T> {
public void setStyle(T style);
public void setStyle(String style);
public T getStyle();
}
1.2 BitmapTileSourceBase
一个实现了ITileSource的瓦片源
public abstract class BitmapTileSourceBase implements ITileSource{
...
}
1.2.1 OnlineTileSourceBase
一个用于在线在线瓦片源管理的抽象类瓦片源
public abstract class OnlineTileSourceBase extends BitmapTileSourceBase{
...
}
1.2.2 TMSOnlineTileSourceBase
一个类似于OnlineTileSourceBase的在线瓦片源,只是采用的编号系统是Tile Map Service标准,所以解析的方式与OnlineTileSourceBase略有不同,关于瓦片编号系统请查看http://blog.youkuaiyun.com/u013896312/article/details/78298265。
public abstract class TMSOnlineTileSourceBase extends OnlineTileSourceBase{
...
}
1.2.3 XYTileSource
一个简单的以ZXY标准为编号系统的瓦片源
public class XYTileSource extends OnlineTileSourceBase {
...
}
1.2.4 FileBasedTileSource
一个极简单的瓦片源,仅用于离线瓦片源。
public class FileBasedTileSource extends XYTileSource{
...
}
1.2.5 FileBasedTileSource
用于云端瓦片源的类。
public class CloudmadeTileSource extends OnlineTileSourceBase implements IStyledTileSource<Integer> {
...
}
2. 不同瓦片源及其管理
2.1 不同瓦片源
osmdroid为开发者根据在下瓦片源构造了不同的瓦片源类型,并采用TileSourceFactory的方式管理了一部分瓦片源,一方便开发者的使用。主要的瓦片源类型如下:
- HEREWeGoTileSource
- MapBoxTileSource
- MapQuestTileSource
- QuadTreeTileSource
- ThunderforestTileSource
- bing.BingMapTileSource
不同瓦片源的配置方式请查看http://blog.youkuaiyun.com/u013896312/article/details/78298265
离线瓦片源配置方式请查看http://blog.youkuaiyun.com/u013896312/article/details/78299996
关于瓦片使用疑问请查看http://blog.youkuaiyun.com/u013896312/article/details/78300021
2.2 瓦片源的管理
TileSourceFactory用于管理以静态的形式管理多个瓦片源,如下:
public class TileSourceFactory {
...
private static List<ITileSource> mTileSources;
static {
mTileSources = new ArrayList<ITileSource>();
mTileSources.add(MAPNIK);
mTileSources.add(PUBLIC_TRANSPORT);
mTileSources.add(HIKEBIKEMAP);
mTileSources.add(USGS_TOPO);
mTileSources.add(USGS_SAT);
mTileSources.add(ChartbundleWAC);
mTileSources.add(ChartbundleENRH);
mTileSources.add(ChartbundleENRL);
mTileSources.add(OpenTopo);
}
这些类型的瓦片源在工厂类中以公开静态的形式存在,您可以通过 TileSourceFactory.MAPNIK 来获取相应的瓦片源。