Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
8864ccb
add demo video
May 9, 2025
ac8e540
add mvp implementation
May 17, 2025
dc56c63
migrate debug app on maplibre compose
May 21, 2025
500cf6d
add cache for tiles to reduce network requests
May 22, 2025
8d6fb79
fix line decoding
May 22, 2025
86a08fa
fix the remaining issues
May 26, 2025
759bad6
rollback internal/private visibility
Jun 10, 2025
2d1005f
move symbol rendering to markers API
Jun 14, 2025
0c19673
fix code comments
Jun 19, 2025
c7784f6
moved code from maplibre-raterizer into library
rkreienbuehl Jan 12, 2026
8a48b49
moved dependencies to library catalog
rkreienbuehl Jan 12, 2026
65511de
removed httpClient and moved viewmodel code into VectorRasterizer and…
rkreienbuehl Feb 16, 2026
e1fc907
commented unused rememberRasterizer
rkreienbuehl Feb 16, 2026
0da81c3
fixed loading of files in tests
rkreienbuehl Feb 16, 2026
6b76d07
changed compileSdk to 36
rogerkreienbuehl Feb 19, 2026
4b703f8
added -Xexpect-actual-classes compiler argument
rogerkreienbuehl Feb 19, 2026
dc81d92
implemented basic demo
rogerkreienbuehl Feb 19, 2026
7d0ffe0
fixed android crashes on rendering vector tiles
rogerkreienbuehl Feb 24, 2026
9b6d152
fixed crashes on iOS
rogerkreienbuehl Feb 24, 2026
3da9f30
removed ktor dependencies from library module
rogerkreienbuehl Feb 24, 2026
1f7d66e
removed comments
rogerkreienbuehl Feb 24, 2026
9252374
removed maplibre-rasterizer module
rogerkreienbuehl Feb 24, 2026
b70b431
add demo video
May 9, 2025
9f5e068
add mvp implementation
May 17, 2025
27a6ae0
migrate debug app on maplibre compose
May 21, 2025
e920f3d
add cache for tiles to reduce network requests
May 22, 2025
8413fb9
fix line decoding
May 22, 2025
3788b15
fix the remaining issues
May 26, 2025
d399298
rollback internal/private visibility
Jun 10, 2025
168ca4f
move symbol rendering to markers API
Jun 14, 2025
0018449
fix code comments
Jun 19, 2025
578b955
moved code from maplibre-raterizer into library
rkreienbuehl Jan 12, 2026
f0d32ec
moved dependencies to library catalog
rkreienbuehl Jan 12, 2026
7bc4b7e
removed httpClient and moved viewmodel code into VectorRasterizer and…
rkreienbuehl Feb 16, 2026
691b62b
commented unused rememberRasterizer
rkreienbuehl Feb 16, 2026
1884a6d
fixed loading of files in tests
rkreienbuehl Feb 16, 2026
1622216
implemented basic demo
rogerkreienbuehl Feb 19, 2026
0d21d46
fixed android crashes on rendering vector tiles
rogerkreienbuehl Feb 24, 2026
8a1493e
fixed crashes on iOS
rogerkreienbuehl Feb 24, 2026
684b9f1
removed ktor dependencies from library module
rogerkreienbuehl Feb 24, 2026
eb9523a
removed comments
rogerkreienbuehl Feb 24, 2026
5cc8683
removed maplibre-rasterizer module
rogerkreienbuehl Feb 24, 2026
ef036a6
Merge branch 'feature/mvt-support' of github.com:rkreienbuehl/MapComp…
rogerkreienbuehl Feb 25, 2026
6845b40
fixed gradle error
rogerkreienbuehl Feb 25, 2026
6bd3e71
removed unused import
rogerkreienbuehl Feb 25, 2026
8da4b1c
added -Xexpect-actual-classes compiler arg
rogerkreienbuehl Feb 25, 2026
d953353
fixed compile errors
rogerkreienbuehl Feb 25, 2026
73d382f
improved performance with LruCache
rogerkreienbuehl Feb 26, 2026
72b9244
performance optimizations
rogerkreienbuehl Feb 27, 2026
a1343eb
moved symbol painting into a separate layer instead of adding markers
rogerkreienbuehl Feb 27, 2026
2f08cb2
used IODispatcher for network calls
rogerkreienbuehl Feb 27, 2026
7eb5875
Remove former demo and refactored core classes to better expose data …
p-lr Feb 28, 2026
c63fd02
Refactor `MapState.addVectorLayer`
p-lr Mar 1, 2026
0ebf357
Cancel ongoing symbol processing on viewport change
p-lr Mar 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,3 +22,4 @@ publish-mavenCentral.sh
compile_and_install_demo_release.sh

.kotlin
/demo/maplibreDebugApp/cache/
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -6,5 +6,6 @@ plugins {
alias(libs.plugins.jetbrainsCompose) apply false
alias(libs.plugins.kotlinMultiplatform) apply false
alias(libs.plugins.composeCompiler) apply false
alias(libs.plugins.kotlinx.serialization).apply(false)
alias(libs.plugins.vanniktechPublish) apply false
}
3 changes: 2 additions & 1 deletion demo/composeApp/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ kotlin {
"-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
"-Xopt-in=kotlinx.coroutines.ExperimentalForInheritanceCoroutinesApi",
"-Xannotation-default-target=param-property",
"-Xcontext-parameters"
"-Xcontext-parameters",
"-Xexpect-actual-classes"
)
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package ovh.plrapps.mapcompose.demo.ui.screens

import androidx.compose.runtime.Composable
import cafe.adriel.voyager.core.model.rememberScreenModel
import cafe.adriel.voyager.core.screen.Screen
import ovh.plrapps.mapcompose.demo.viewmodels.VectorDemoVM

actual object VectorDemo : Screen {
@Composable
override fun Content() {
val screenModel = rememberScreenModel { VectorDemoVM() }

VectorCommonUi(screenModel)
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
package ovh.plrapps.mapcompose.demo.viewmodels

import kotlinx.io.Buffer
import kotlinx.io.RawSource
import kotlinx.io.asSource
import org.jetbrains.compose.resources.ExperimentalResourceApi
import ovh.plrapps.mapcompose.core.TileStreamProvider
import ovh.plrapps.mapcompose.core.VectorTileStreamProvider
import ovh.plrapps.mapcomposemp.demo.Res
import java.net.HttpURLConnection
import java.net.URL

Expand Down Expand Up @@ -42,4 +47,44 @@ actual fun makeOsmTileStreamProvider() : TileStreamProvider {
null
}
}
}

actual class OSMVectorTileStreamProvider actual constructor(actual override val styleUrl: String) :
VectorTileStreamProvider {

@OptIn(ExperimentalResourceApi::class)
actual override suspend fun loadResources(url: String): RawSource? {
return when (url) {
"files/style_street_v2.json" -> {
val buffer = Buffer()
buffer.write(Res.readBytes(url))
buffer
}
else -> getResourceAsStream(url)
}
}

actual override suspend fun getTileStream(
tileUrl: String,
row: Int,
col: Int,
zoomLvl: Int
): RawSource? {
return getResourceAsStream(tileUrl)
}

private fun getResourceAsStream(url: String): RawSource? {
return try {
val url = URL(url)
val connection = url.openConnection() as HttpURLConnection
// OSM requires a user-agent
connection.setRequestProperty("User-Agent", "Chrome/120.0.0.0 Safari/537.36")
connection.doInput = true
connection.connect()
connection.inputStream.asSource()
} catch (e: Exception) {
e.printStackTrace()
null
}
}
}
Loading