Skip to content

Add Polygons(states) for registering many polygons at once - #13

Merged
wf9a5m75 merged 2 commits into
developfrom
feat/polygons
Nov 9, 2026
Merged

wf9a5m75 merged 2 commits into
developfrom
feat/polygons

Conversation

@wf9a5m75

@wf9a5m75 wf9a5m75 commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

何をするか

多数のポリゴン(既定: 2,000 個以上または頂点 50,000 以上)を、ネイティブの図形ではなくラスタータイルとして描きます(PolygonTilingOptions / PolygonTiler)。web・Android・iOS で同じ設計です。

  • タイルは SDK のタイルサーバー(web はサービスワーカー、ネイティブは LocalTileServer)で描きます。ズームごとに画素格子へ丸めて簡略化し、外周と穴の巻きを逆にそろえて nonzero で塗ります。
  • タップ判定は従来どおり PolygonManager が元の形で行います(InfoBubble などは今までどおり)。
  • タイルにできなくなった変更(geodesic にする、経度幅 180° 以上、3 点未満)が入ったポリゴンは、その場でネイティブ描画へ戻ります。
  • ボストン全域の区画(98,815 件・穴あり)と建物(105,599 件)で確認しています。

このリポジトリで変えたこと

  • Polygons(states): 多数のポリゴンを 1 つの effect で登録する(タイル化の入口)。develop の merge は衝突なし。

develop の取り込み

このブランチは push 済みだったので、rebase せず origin/develop を merge commit で取り込みました。

  • 親 android-sdk(feat/polygon-tiling)で core / compose / kml / geojson / icons と各プロバイダの testDebugUnitTest: core 350 件ほか全部 pass(OMM は develop から引き継いだ 1 件の失敗のみ。android.util.Log.isLoggable がテストでモックされていない)。apiCheck: 全モジュール ok(増えた API はベースラインに追加)。
  • タブレット実機(MapLibre / Google / Mapbox)でボストンの区画 98,815 件: タイルで描かれ、街区(穴)が正しく、タップで InfoBubble。重なり順は GroundImage < ポリゴンタイル < サークル < ポリライン < マーカー(MapLibre / Google)。MapLibre で頂点ドラッグの追従。Google ↔ MapLibre の切り替え 10 往復で Native Heap が頭打ち(89〜96 MB。スクラッチ Bitmap のプール化の前は 156 MB まで増え続けた)。

マージの順番

この機能は複数のリポジトリにまたがります。android-sdk-core → android-sdk-compose(feat/polygons)→ 各 android-for- → android-sdk(親)* の順にマージが要ります。

この PR は大きな機能なので、マージするかはレビューのうえで判断してください。

Same shape as Markers(states): diffs the list against the ids this call
added last time and publishes the result in one collector update, so
several Polygons()/Polygon() can share a map.
@wf9a5m75
wf9a5m75 merged commit 003a8e0 into develop Nov 9, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant