smellman's Broken Diary

クソみたいなもんです

2024/12/19の日記 maplibre-react-nativeで作るトイレマップ

これはMapLibre Advent Calendar 2024の19日目の投稿です。

qiita.com

昔僕が書いたReact Nativeの本ではMapbox SDKを使ってトイレマップを実現していました。

github.com

当時(2018年)はまだMapLibreが存在していなかった時代です。

というわけで、今回はmaplibre-react-nativeを使って新しいトイレマップを作ってみました。

github.com

動かすだけなら以下の手順でいけると思います。

git clone https://github.com/smellman/ToiletMap-maplibre.git
cd ToiletMap-maplibre
npm install
bundle install
cd ios
bundle exec pod install
cd ..
npm run start

あとは "ios/ToiletMap.xcworkspace" を開いてxcodeでシミュレーターを起動すればいけます。

https://i.gyazo.com/fcbd3105aa3da7fb5e7d1d90b49e3b11.jpg

起動したあとにトイレを検索ボタンを押すとOverpass API経由でトイレを検索します。

https://i.gyazo.com/578ae6a0692c8a96244bc79c432a0138.jpg

トイレアイコンをタップをすると詳細が表示されるというものです。

https://i.gyazo.com/dcc62d12f7bb19000bc90c60d709eeaa.jpg

作り方は、普通にreact nativeのcliで新しいプロジェクトを作ってから、maplibre-react-nativeをインストールします。

npx @react-native-community/cli init ToiletMap
cd ToiletMap
npm install @maplibre/maplibre-react-native --save

maplibre-react-nativeはちょっと古いバージョン(alpha)が入ってしまうので、"^10.0.0-beta.11"に書き換えてもう一度npm installをします。

次にpod installとnpm run startをします。

cd ios
bundle exec pod install
cd ..
npm run start

あとはxcodeで"ios/ToiletMap.xcworkspace"を開いてシミュレーターでビルドしながらApp.tsxを書き換えていきます。

github.com

まぁ、コード読めばだいたいわかると思います!

ちなみにiPhoneの実機ではビルド失敗するのでそれは解決したら報告します!

ではでは。