Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
09dbcd2
Make bearing a clockwise map rotation (#12)
wf9a5m75 Sep 4, 2026
684d91d
Pass declutterPx through to the marker tile renderer
wf9a5m75 Sep 21, 2026
4687bae
Put raster overlays under the basemap's labels
wf9a5m75 Sep 27, 2026
43153ee
Register VectorStyleSupport and survive style reloads
wf9a5m75 Sep 30, 2026
c23859f
update dependencies (#13)
wf9a5m75 Oct 5, 2026
4953d09
Update MapLibre to 13.7.1 and OkHttp to 5.5.1 (#14)
wf9a5m75 Oct 24, 2026
9e78a69
Vector style support with in-place style mutations (#15)
wf9a5m75 Oct 24, 2026
92ad832
Test that a ground image survives a map design change
wf9a5m75 Oct 27, 2026
26fdcf8
Declare the test libraries in this repo's own catalog
wf9a5m75 Oct 27, 2026
46c73d6
Merge pull request #16 from MapConductor/test/ground-image-style-change
wf9a5m75 Oct 27, 2026
2f49df5
Add .claude/settings.json
wf9a5m75 Oct 28, 2026
16c5dc1
Use the core reapplyStyle() for raster layers
wf9a5m75 Oct 29, 2026
feffd7c
Merge pull request #17 from MapConductor/fix/reapply-style-under-lock
wf9a5m75 Oct 29, 2026
b9d8af0
Redraw tiles once per burst of tiled-marker changes
wf9a5m75 Nov 5, 2026
8c4fb97
Cancel a pending tile refresh on destroy
wf9a5m75 Nov 5, 2026
589fc5f
Merge pull request #18 from MapConductor/perf/tiled-marker-update
wf9a5m75 Nov 5, 2026
89de3bb
Merge pull request #19 from MapConductor/perf/tiled-marker-update
wf9a5m75 Nov 6, 2026
09faaa8
Keep the whole map design across configuration changes
wf9a5m75 Nov 7, 2026
8bbfd52
Merge pull request #20 from MapConductor/fix/saver-state
wf9a5m75 Nov 7, 2026
136dbd1
Draw large polygon sets as raster tiles (PolygonTiler)
wf9a5m75 Nov 7, 2026
7d0f555
Destroy the MapView when the map leaves the composition
wf9a5m75 Nov 7, 2026
e09ef85
Dispose the polygon tiler when the conductor is destroyed
wf9a5m75 Nov 7, 2026
4b667f7
Read the controller through the state base, which MapViewBase clears
wf9a5m75 Nov 8, 2026
ddc1641
Extend core PolygonController for MapLibre polygons
wf9a5m75 Nov 8, 2026
fa9e625
Polygon conductor: move a tiled polygon to the GeoJSON layers when a …
wf9a5m75 Nov 8, 2026
3c36249
Redraw markers after clearing them
wf9a5m75 Nov 8, 2026
232b5f1
Merge pull request #23 from MapConductor/fix/overlay-clear-order
wf9a5m75 Nov 8, 2026
0540f31
Merge pull request #22 from MapConductor/fix/mapview-teardown
wf9a5m75 Nov 8, 2026
28e6cf1
Merge develop into refactor/polygon-controller
wf9a5m75 Nov 8, 2026
ebbd78a
Merge pull request #21 from MapConductor/refactor/polygon-controller
wf9a5m75 Nov 8, 2026
324b60b
Clear strategy markers in clearOverlays()
wf9a5m75 Nov 8, 2026
827e8bb
Stack overlays by band, independent of add order and style reloads
wf9a5m75 Nov 8, 2026
383ed89
Merge pull request #24 from MapConductor/fix/clear-strategy
wf9a5m75 Nov 8, 2026
ff9b1a8
Merge pull request #25 from MapConductor/fix/overlay-stacking-order
wf9a5m75 Nov 8, 2026
9523aa5
Merge remote-tracking branch 'origin/develop' into feat/polygon-tiling
wf9a5m75 Nov 9, 2026
f78f720
Update the API baseline
wf9a5m75 Nov 9, 2026
1662e02
Merge pull request #26 from MapConductor/feat/polygon-tiling
wf9a5m75 Nov 9, 2026
23b5838
Draw large polyline sets as raster tiles (PolylineTiler)
wf9a5m75 Nov 9, 2026
975d414
Merge pull request #27 from MapConductor/feat/polyline-tiling
wf9a5m75 Nov 10, 2026
301d9c9
Support bulk Circles with raster tiles
wf9a5m75 Nov 11, 2026
a511c62
Merge pull request #28 from MapConductor/feat/circles-bulk-cache
wf9a5m75 Nov 11, 2026
fdde6aa
Order markers with MarkerDrawOrder
wf9a5m75 Nov 11, 2026
b528b72
Reorder markers when the map rotates
wf9a5m75 Nov 11, 2026
4007421
Merge pull request #29 from MapConductor/fix/marker-zindex-order
wf9a5m75 Nov 12, 2026
48610d8
Apply camera paddings and report fov on MapLibre
wf9a5m75 Nov 12, 2026
1ac975f
Merge remote-tracking branch 'origin/develop' into feat/camera-paddings
wf9a5m75 Nov 12, 2026
7586e4d
Merge pull request #30 from MapConductor/feat/camera-paddings
wf9a5m75 Nov 12, 2026
34bcdbe
Emulate camera paddings by shifting the centre
wf9a5m75 Nov 12, 2026
b3261aa
Merge pull request #31 from MapConductor/fix/padding-emulation
wf9a5m75 Nov 12, 2026
3088372
Release 1.4.0
wf9a5m75 Nov 13, 2026
10b3b62
Merge pull request #32 from MapConductor/release/1.4.0
wf9a5m75 Nov 13, 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
6 changes: 6 additions & 0 deletions .claude/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"attribution": {
"commit": "",
"pr": ""
}
}
25 changes: 23 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,29 @@ jobs:
cache: 'gradle'

- name: Build core and compose locally
env:
HEAD_REF: ${{ github.head_ref }}
run: |
git clone --depth 1 https://github.com/MapConductor/android-sdk-core.git _core
# コア側に PR と同名のブランチがあるなら、そちらを組む。
#
# ここを default ブランチ固定にしていると、**コアの未マージな変更に追随する
# PR は永久に赤いまま**になる。実際 CameraBearing をコアへ足したとき、
# プロバイダ側の PR が 10 本まとめて Unresolved reference で落ちた。
# コアが先にマージされるまで待つ、という運用は取り込み順の事故を呼ぶので、
# 同名ブランチがあれば拾う形にしてある(無ければ従来どおり default)。
clone_matching() {
repo="$1"; dir="$2"
url="https://github.com/MapConductor/$repo.git"
if [ -n "$HEAD_REF" ] && git ls-remote --exit-code --heads "$url" "$HEAD_REF" >/dev/null 2>&1; then
echo "$repo: matching branch $HEAD_REF"
git clone --depth 1 --branch "$HEAD_REF" "$url" "$dir"
else
echo "$repo: default branch"
git clone --depth 1 "$url" "$dir"
fi
}

clone_matching android-sdk-core _core
cd _core
./gradlew --no-daemon publishToMavenLocal
cd ..
Expand All @@ -53,7 +74,7 @@ jobs:
}
EOF

git clone --depth 1 https://github.com/MapConductor/android-sdk-compose.git _compose
clone_matching android-sdk-compose _compose
cd _compose
./gradlew --no-daemon publishToMavenLocal
cd ..
Expand Down
81 changes: 55 additions & 26 deletions api/android-for-maplibre.api

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,14 @@ dependencies {
} else {
api("com.mapconductor:compose:$libraryVersion")
}

// A real MapView loading real (local) styles: what a design change does to
// the overlays only shows on a map that actually swaps its style.
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.runner)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.test.manifest)
}

// Set project version for NMCP plugin
Expand Down
4 changes: 2 additions & 2 deletions docs/MapLibreViewControllerImpl.kt.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ class MapLibreViewController(
override val holder: MapLibreMapViewHolderInterface,
private val markerController: MapLibreMarkerController,
private val polylineController: MapLibrePolylineController,
private val polygonController: MapLibrePolygonConductor,
private val polygonController: MapLibrePolygonController,
private val groundImageController: MapLibreGroundImageController,
private val circleController: MapLibreCircleController,
private val rasterLayerController: MapLibreRasterLayerController,
Expand All @@ -39,7 +39,7 @@ Initializes a new instance of the `MapLibreViewController`.
- Type: `MapLibrePolylineController`
- Description: The controller responsible for managing polylines.
- `polygonController`
- Type: `MapLibrePolygonConductor`
- Type: `MapLibrePolygonController`
- Description: The controller responsible for managing polygons.
- `groundImageController`
- Type: `MapLibreGroundImageController`
Expand Down
37 changes: 37 additions & 0 deletions docs/polygon/MapLibrePolygonCompositeRenderer.kt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
# MapLibrePolygonCompositeRenderer

## Signature

```kotlin
class MapLibrePolygonCompositeRenderer(
val fill: MapLibrePolygonOverlayRenderer,
val outline: MapLibrePolylineOverlayRenderer,
) : PolygonOverlayRendererInterface<MapLibreActualPolygon>
```

## Description

Presents the fill renderer and the outline renderer to the core `PolygonController` as a single
renderer.

A MapLibre fill layer can only draw a 1 px outline with no width, so to honour `strokeWidth` each
polygon's outer ring is also drawn as a closed polyline with the id `outline-<polygon id>` through
`outline`. Every call the controller makes on this renderer is forwarded to `fill` and mirrored on
`outline`:

- `onAdd` / `onChange`: the fill is created or rebuilt; when that succeeds, the outline polyline is
(re)created with the polygon's `strokeColor`, `strokeWidth`, `geodesic`, `zIndex` and `extra`.
- `onRemove`: the outline polylines are dropped and both sources are redrawn without the removed
polygons (the controller's `clear()` does not call `onPostProcess`).
- `onPostProcess`: both sources are redrawn.

Holes are not outlined.

## Constructor Parameters

- `fill`
- Type: `MapLibrePolygonOverlayRenderer`
- Description: Draws the polygon fill (with holes) into the fill source.
- `outline`
- Type: `MapLibrePolylineOverlayRenderer`
- Description: Draws the outlines into the polygon outline source.
244 changes: 0 additions & 244 deletions docs/polygon/MapLibrePolygonConductor.kt.md

This file was deleted.

30 changes: 30 additions & 0 deletions docs/polygon/MapLibrePolygonController.kt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# MapLibrePolygonController

## Signature

```kotlin
class MapLibrePolygonController(
override val renderer: MapLibrePolygonCompositeRenderer,
) : PolygonController<MapLibreActualPolygon>(renderer.fill.polygonManager, renderer)
```

## Description

The polygon controller of the MapLibre provider. It extends the core `PolygonController`, so diffing
(add / change / remove), `has`, `find`, the click cascade (`resolveTap`, `dispatchClick`),
`clear` and `destroy` are the core implementation shared with every other provider.

The only provider-specific part is the renderer: a fill layer can only draw a 1 px outline, so the
outline is drawn as a separate polyline by [`MapLibrePolygonCompositeRenderer`](./MapLibrePolygonCompositeRenderer.kt.md).

## Constructor Parameters

- `renderer`
- Type: `MapLibrePolygonCompositeRenderer`
- Description: Draws both the fill and the outline. Its `fill.polygonManager` is used as the
controller's polygon manager, so the controller and the fill renderer always see the same
entities.

## Properties

- `zIndex`: `2` (unchanged from the former `MapLibrePolygonConductor`).
Loading
Loading