Swift Playgroundsで学ぶiOSプログラミング 第40回
逆ジオコーディングを利用して地図から住所を割り出す
ユーザーがタップした地図の場所を突き止めるプログラミング
2017年05月29日 17時00分更新
このところ、このSwift Playgroundsの最新バージョンで使えるようになったマップキットを取り上げてきました。前回は、地図上の指定した位置をマークして何らかの情報を表示するアノテーションを表示する方法を紹介しました。
今回は、プログラムで緯度と経度によって指定した位置にアノテーションを設定するのではなく、地図を表示した画面にユーザーがタッチした位置に付ける方法を学びます。また、その場所の住所を「逆ジオコーディング」という機能を使って割り出し、アノテーションのコールアウトに表示することにも挑戦します。
マップビュー上にジェスチャー認識機能を追加
今回のプログラムも、前回作成したアノテーション表示のための基本的な記述を利用します。マップビューを扱うためのビューコントローラーを用意し、その中のviewDidLoadメソッドでマップビューを作成し、表示位置や領域を設定するというものでした。
今回は、そのviewDidLoadメソッドに、もう1つ重要な設定を付け加えます。それはユーザーが画面にタッチする操作、つまりジェスチャーを認識するための、ジェスチャーリコグナイザーの設定です。ジェスチャーリコグナイザーは、以前にウェブキットを扱った際に、新たなURLを入力するアラートを表示するきっかけとして使いました。その際のジェスチャーはロングプレス、つまり長押しでしたが、今回も長押しでいきましょう。ウェブキットの場合は、ウェブページ上の単語の選択と紛らわしくなるため、2本指のロングプレスとしていましたが、今回は紛らわしい操作もないため、1本指のロングプレスとします。
ジェスチャー認識のためのコードは、ほとんど同じなので、位置も含めて画面で確認してください。
作成したジェスチャーレコグナイザーのオブジェクトは、addGestureRecognizerメソッドを使ってビューに追加します。このビューは、もちろんマッピューのことです。
この連載の記事
- 第100回 SceneKitの物理現象シミュレーションとアニメーションをARKitに持ち込む
- 第99回 「物理学体」と「物理学場」を設定して物理現象をシミュレーション
- 第98回 SceneKitのノードに動きを加えるプログラム
- 第97回 いろいろな形のノードをシーンの中に配置する
- 第96回 SceneKitの基礎シーンビュー、シーン、ノードを理解する
- 第95回 現実世界の床にボールや自動車のモデルを配置する
- 第94回 ARKitを使って非現実世界との融合に備える
- 第93回 ARKitが使えるiPadを識別するプログラム
- 第92回 Swift Playgrounds 2.1での問題点をまとめて解消する
- 第91回 iPadの内蔵カメラで撮影した写真を認識するプログラム
- この連載の一覧へ