MKMapSnapshotterを使ってピン有りの地図画像を撮影する

iPhoneアプリでMKMapSnapshotterを使ってピン付きで地図画像を撮影するようにした。

中心にピンをつけるのに少し苦労した。

MKMapSnapshotterの公式ドキュメントを参照すると、

Snapshotter objects don’t capture the visual representations of any overlays or annotations that your app creates. If you want those items to appear in the final snapshot, you must draw them on the resulting snapshot image.

要約すると「アノテーションは撮影できません。もし、それらを含めたいのなら自分でスナップショット画像上に描画してください。」

と書かれている。

なぜそのようになっているか分からないが、スナップショットにピンを表示するにはスナップショット画像とピン画像を用意して自分で描画しなければならないらしい。

以下が実装したコード。

ImageRendererを使った描画部分のコードが長くなってしまった。

スナップショットを撮影するときに、オプションで1行追加すれば良いようにAppleさんが改善して欲しい。

参考

とても分かりやすいブログでした。

https://muchan611.hatenablog.com/entry/2020/10/31/153137