緯度経度をピクセル座標に変換するSwift実装
地図タイルを描画してそこに自分の現在位置なり、位置情報と紐づいたデータなりをマッピングしようとすると、緯度経度からピクセル座標に変換する必要がある。
それをSwiftでどう実装するか、のメモ。
なお今回はあえてMapKitを使用しない制約の中での話なのだが、MapKit を使うと普通に MKMapView に緯度経度をビュー内の座標に変換するメソッドがあったりする。
func convert(
_ coordinate: CLLocationCoordinate2D,
toPointTo view: UIView?
) -> CGPoint
繰り返しになるが、今回はMapKitを使わず自前で地図タイルを描画する場合に、どうラスタータイルの画像内における位置と、位置情報(緯度経度)とを紐づけるかという話。
ズームレベル・緯度経度からピクセル座標へ変換する計算式
全然わからないのでググった。こちらの記事に数式が載っていた:
本質的にはメルカトル図法の話ではあるが、ズームレベルの概念も絡んでやや複雑になっている。
なお元記事の元記事がこちらで、
さらにその元記事はGoogle Mapsのドキュメントのようだが、リンク先にアクセスすると404。そこにはこう書かれていたようだ:
記事は難しそうな式の導出過程が記載されている。こういう先人の記事が本当にありがたい…
Swift での実装
最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/