我想要實現這個功能的TileProvider:谷歌地圖Android的阿比2 - 混合TileProvider/URLTileProvider爲MapBox實施
如果說Tile
可脫機
Map
要求一個Tile
- TileProvider檢查
- 如果是這樣,TileProvider返回說
Tile
- 無論可用性,
TileProvider
在線檢查一個新的瓷磚並將其下載到Cache
在外部存儲器中。 TileProvider
給出新地圖的地圖,地圖更新它。
這是我目前UrlTileProvider
實現:
public class MapBoxOnlineTileProvider extends UrlTileProvider {
private static final String[] FORMATS;
static {
final String[] servers = new String[] { "a", "b", "c", "d" };
final String[] formats = new String[servers.length];
for (int i = 0; i < servers.length; i++) {
formats[i] = String.format(
"%%s://%s.tiles.mapbox.com/v3/%%s/%%d/%%d/%%d.png",
servers[i]);
}
FORMATS = formats;
}
// ------------------------------------------------------------------------
// Instance Variables
// ------------------------------------------------------------------------
private String mMapIdentifier;
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
public MapBoxOnlineTileProvider(final String mapIdentifier) {
super(256, 256);
this.mMapIdentifier = mapIdentifier;
}
// ------------------------------------------------------------------------
// Public Methods
// ------------------------------------------------------------------------
public String getMapIdentifier() {
return this.mMapIdentifier;
}
public void setMapIdentifier(final String anIdentifier) {
this.mMapIdentifier = anIdentifier;
}
@Override
public URL getTileUrl(final int x, final int y, final int z) {
final String f = FORMATS[new Random().nextInt(FORMATS.length)];
final String p = "http";
try {
return new URL(String.format(f, p, this.mMapIdentifier, z, x, y));
} catch (final MalformedURLException e) {
e.printStackTrace();
return null;
}
}
}
然而,這隻會緩存在內存中,所以如果用戶關閉我的應用程序不會將它們緩存,默認的谷歌地圖的地圖將在下載之前出現。
UrlTileProvider
implements getTile
as final
,所以我不能覆蓋它。 TileProvider
沒有getTileURL
方法,並且UrlTileProvider
源代碼不可用於我重寫我的解決方案。
我該如何解決這個問題?有什麼辦法可以做我想做的事嗎?爲什麼getTile
最終?我錯過了什麼嗎?
什麼是MapBoxOnlineTileProvider? – pablobaldez