我正在尝试使用Google实现瓷砖层,但是官方文档中只有Java中的代码示例,我的项目是用Kotlin编写的。我在kotlin找不到关于如何做同样的事情的例子。有人知道怎么做吗?
private GoogleMap mMap;
TileProvider tileProvider = new UrlTileProvider(256, 256) {
@Override
public URL getTileUrl(int x, int y, int zoom) {
/* Define the URL pattern for the tile images */
String s = String.format("http://my.image.server/images/%d/%d/%d.png",
zoom, x, y);
if (!checkTileExists(x, y, zoom)) {
return null;
}
try {
return new URL(s);
} catch (MalformedURLException e) {
throw new AssertionError(e);
}
}
/*
* Check that the tile server supports the requested x, y and zoom.
* Complete this stub according to the tile range you support.
* If you support a limited range of tiles at different zoom levels, then you
* need to define the supported x, y range at each zoom level.
*/
private boolean checkTileExists(int x, int y, int zoom) {
int minZoom = 12;
int maxZoom = 16;
if ((zoom < minZoom || zoom > maxZoom)) {
return false;
}
return true;
}
};
TileOverlay tileOverlay = mMap.addTileOverlay(new TileOverlayOptions()
.tileProvider(tileProvider));如有任何帮助,我们将不胜感激。
发布于 2019-03-05 19:28:07
最后,我自己完成了基于这一回应,我只需要实例化UrlTileProvider抽象类如下:
val tileProvider: TileProvider = object: UrlTileProvider(256, 256){
...
}最终结果:
val tileProvider: TileProvider = object: UrlTileProvider(256, 256) {
override fun getTileUrl(x: Int, y: Int, zoom: Int): URL? {
/* Define the URL pattern for the tile images */
val s: String = String.format("http://my.image.server/images/%d/%d/%d.png",
zoom, x, y)
if (!checkTileExists(x, y, zoom)) {
return null;
}
try {
return URL(s)
} catch (e: MalformedURLException) {
throw AssertionError(e)
}
}
/*
* Check that the tile server supports the requested x, y and zoom.
* Complete this stub according to the tile range you support.
* If you support a limited range of tiles at different zoom levels, then you
* need to define the supported x, y range at each zoom level.
*/
private fun checkTileExists(x: Int, y: Int, zoom: Int): Boolean {
val minZoom: Int = 12
val maxZoom: Int = 16
if ((zoom < minZoom || zoom > maxZoom)) {
return false
}
return true
}
}
val tileOverlay: TileOverlay = mMap.addTileOverlay(TileOverlayOptions()
.tileProvider(tileProvider))希望它能帮到别人。
发布于 2019-03-05 21:08:54
加油加油!!
private var mMap:GoogleMap?=null
val tileProvider = object: UrlTileProvider(256, 256) {
override fun getTileUrl(x:Int,y:Int,zoom:Int):URL {
/* Define the URL pattern for the tile images */
val s = String.format("http://my.image.server/images/%d/%d/%d.png",
zoom, x, y)
if (!checkTileExists(x, y, zoom)) {
return null
}
try {
return URL(s)
} catch (e:MalformedURLException) {
throw AssertionError(e)
}
}
/*
* Check that the tile server supports the requested x, y and zoom.
* Complete this stub according to the tile range you support.
* If you support a limited range of tiles at different zoom levels, then you
* need to define the supported x, y range at each zoom level.
*/
private fun checkTileExists(x:Int,y:Int,zoom:Int):Boolean {
val minZoom = 12
val maxZoom = 16
if ((zoom < minZoom || zoom > maxZoom)) {
return false
}
return true
}
}
val tileOverlay = mMap!!.addTileOverlay(TileOverlayOptions()
.tileProvider(tileProvider))https://stackoverflow.com/questions/55008667
复制相似问题