Skip to content

ec22s/swifter-offline-maps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

SwifterOfflineMaps

2025年12月12日 福岡Tech LT大忘年会 モバイル枠でデモしたアプリのソースです


  • 当日流したデモ動画

    • 九州北部のズームレベル14までの地図データをアプリに内蔵した例 (ファイルサイズ 約190MB)

    • iPad第10世代実機での動作を録画

    • 左がアプリ内蔵地図、右が通常のオンライン地図

    • 左側でズーム・移動すると右側の地図も連動

    • ネット接続状態で徐々にズームイン → 途中でネットから切断 → 左のオフライン地図だけ精細に表示

    demo1_Fukuoka_640x444.mp4

  • 当日準備したけど割愛したデモ動画

    • 地図データと端末は前項と同じ、モバイル回線がつながりにくい地域で録画

    • ネット切断状態で徐々に熊本市付近にズームイン → 左のオフライン地図は精細に表示 → 途中でネットに接続 → 右側の通常地図はデータ読み込みまで一定の時間がかかる

    demo2_Kumamoto_640x444.mp4

アプリの情報

  • ビルド環境

    • macOS 15.6 (24G84)

    • Xcode 26.2 (17C52)

  • 動作確認環境

    • iOS Simulator : iPad (A16), iPad OS 26.2

    • 実機 : iPad (10th), iPad OS 18.7.1

  • 利用ライブラリ

  • 利用データ


デモの再現手順

  • (1) 本リポジトリのソースをクローン

  • (2) 地図データの準備

    • maptiler > North Kyushu から OpenStreetMap vector tiles をダウンロード (利用形態によっては有償になる等の制約があります)

    • ダウンロードした .mbtilesMVT 形式に変換

      • 使えるツールは多数ありますが Node.js 環境なら mbtiles2pbf が便利です。というか今回のデモに使うため Fork and update しました
    • 変換後は 0 1 ... 14 のフォルダになっているはず → 本リポジトリのソースの SwifterOfflineMaps/www.bundle.mvt の下に tiles フォルダを作り、その中に置く

  • (3) Xcodeでプロジェクトを開き、ビルド

    • ターゲットの TeamBundle Identifier 等は各自で設定

    • ライブラリは Swift Package Manager で自動的に読み込まれる

  • (4) ビルドと起動に成功すれば、下記の画面が表示されるはず

    • LTや前掲のデモ動画では左右の違いを目立たせるため左側 (アプリ内蔵地図) でデータのない部分を非表示にしていましたが、現在のソースではしていません

    • 従ってネットに接続した状態では、アプリ起動時の左右の表示がほぼ同じです

  • 不具合等の連絡・問合せはプロフィールのe-mailへお願いします


参考にしたもの

  • (1) swifter-protomaps-example

    • これが無ければ出来なかった

    • PMTiles を使うWeb地図を Swifter でアプリに内蔵したもの

    • ただしフォント・スプライトは未対応

    • 地図だけでなく Swifter の細かい利用方法 (CORS対応等) も貴重な情報

  • (2) mapbox-gl-js-offline-example

    • Webベースの、localhostで完結する意味でのオフライン地図

    • これをiOSアプリに内蔵すればいいのでは? という着想につながった


今後のTODO

  • MVT 形式の代わりに PMTiles を使えるように

  • オフライン地図の不具合調査・改修 (ズームインしても精細なタイルが表示されない場合がある等)

  • maplibre-native-offline-demo との統合

    • 上記でローカル化できなかったフォント・スプライトのみ Swifter などアプリ内蔵Webサーバが送出するようにし、WKWebViewベースでなく MapLibre Native の地図として完全オフラインを実現したい🔥

以上

About

2025年12月12日 福岡Tech LT大忘年会でデモしたアプリ

Resources

Stars

Watchers

Forks