maps-kt/src/commonMain/kotlin/centre/sciprog/maps/compose/MapTileProvider.kt

32 lines
695 B
Kotlin
Raw Normal View History

2022-07-10 22:37:07 +03:00
package centre.sciprog.maps.compose
import androidx.compose.ui.graphics.ImageBitmap
2022-07-15 09:30:36 +03:00
import kotlinx.coroutines.CoroutineScope
2022-07-14 20:53:41 +03:00
import kotlinx.coroutines.Deferred
2022-07-10 22:37:07 +03:00
import kotlin.math.floor
data class TileId(
val zoom: Int,
val i: Int,
val j: Int,
)
data class MapTile(
val id: TileId,
val image: ImageBitmap,
)
interface MapTileProvider {
2022-07-15 09:30:36 +03:00
suspend fun loadTileAsync(id: TileId, scope: CoroutineScope): Deferred<MapTile>
2022-07-10 22:37:07 +03:00
2022-07-11 20:29:07 +03:00
val tileSize: Int get() = DEFAULT_TILE_SIZE
fun toIndex(d: Double): Int = floor(d / tileSize).toInt()
fun toCoordinate(i: Int): Double = (i * tileSize).toDouble()
companion object {
2022-07-10 22:37:07 +03:00
const val DEFAULT_TILE_SIZE = 256
}
2022-07-14 20:53:41 +03:00
}