このページの本文へ

Swift Playgroundsで学ぶiOSプログラミング第40回

逆ジオコーディングを利用して地図から住所を割り出す

ユーザーがタップした地図の場所を突き止めるプログラミング

2017年05月29日 17時00分更新

文● 柴田文彦 編集●吉田ヒロ

  • この記事をはてなブックマークに追加
  • 本文印刷

 このところ、このSwift Playgroundsの最新バージョンで使えるようになったマップキットを取り上げてきました。前回は、地図上の指定した位置をマークして何らかの情報を表示するアノテーションを表示する方法を紹介しました。

 今回は、プログラムで緯度と経度によって指定した位置にアノテーションを設定するのではなく、地図を表示した画面にユーザーがタッチした位置に付ける方法を学びます。また、その場所の住所を「逆ジオコーディング」という機能を使って割り出し、アノテーションのコールアウトに表示することにも挑戦します。

マップビュー上にジェスチャー認識機能を追加

 今回のプログラムも、前回作成したアノテーション表示のための基本的な記述を利用します。マップビューを扱うためのビューコントローラーを用意し、その中のviewDidLoadメソッドでマップビューを作成し、表示位置や領域を設定するというものでした。

 今回は、そのviewDidLoadメソッドに、もう1つ重要な設定を付け加えます。それはユーザーが画面にタッチする操作、つまりジェスチャーを認識するための、ジェスチャーリコグナイザーの設定です。ジェスチャーリコグナイザーは、以前にウェブキットを扱った際に、新たなURLを入力するアラートを表示するきっかけとして使いました。その際のジェスチャーはロングプレス、つまり長押しでしたが、今回も長押しでいきましょう。ウェブキットの場合は、ウェブページ上の単語の選択と紛らわしくなるため、2本指のロングプレスとしていましたが、今回は紛らわしい操作もないため、1本指のロングプレスとします。

 ジェスチャー認識のためのコードは、ほとんど同じなので、位置も含めて画面で確認してください。

ビューコントローラーのビューにマップビューを設定する処理に続けて、1本指長押しのジェスチャーリコグナイザーを設定する処理を追加しています。長押しの長さは1秒にしていますが、適当に調整してください

 作成したジェスチャーレコグナイザーのオブジェクトは、addGestureRecognizerメソッドを使ってビューに追加します。このビューは、もちろんマッピューのことです。

この連載の記事

週間ランキングTOP5

ASCII倶楽部会員によく見られてる記事はコレだ!

ASCII倶楽部の新着記事

会員専用動画の紹介も!