以上で完了です。

開発を始めるには、デベロッパー ドキュメント をご覧下さい。

Google Places API for iOS をアクティベートする

まず初めに Google Developers Console で次の作業を行います。

  1. プロジェクトを作成または選択する
  2. Google Places API for iOS をアクティベートする
  3. 適切なキーを作成する
続ける

Place Picker

Place Picker UI ウィジェット

Place Picker は Google Places API for iOS の一部として提供されるシンプルかつ柔軟な組み込みの UI ウィジェットです。

Place Picker の概要

GMSPlacePicker には、地理的住所やローカル ビジネスに一致するプレイスを含むインタラクティブ マップや近隣のプレイスの一覧を表示する UI ダイアログが用意されています。ユーザーがプレイスを選択すると、アプリでそのプレイスの詳細を取得できます。

独自の UI ウィジェットを作成する上で、Place Picker には次のような利点があります。

  1. Google アプリやサードパーティ製の Place Picker を使用している他のアプリと同じ操作感を実現できる。つまり、アプリユーザーは既に Place Picker の使用方法に慣れ親しんでいることになる。
  2. マップは Place Picker に統合されている。
  3. アクセシビリティが組み込まれている。
  4. 開発期間を短縮できる。

Place Picker にはオートコンプリート機能があり、ユーザーが入力する検索キーワードに応じてプレイスの予測結果を表示します。この機能は、Place Picker との連携機能には必ず存在するため、オートコンプリートを有効にするために特に作業は必要ありません。オートコンプリートの詳細については、プレイスのオートコンプリートをご覧ください。

位置情報使用許可のリクエスト

アプリで Place Picker を使用する場合は、位置情報サービスを利用するためのパーミッションを要求する必要があります。初めに、以下のいずれか、または両方のキーを Info.plist ファイルに追加して、「使用時のみ」または「常時」の使用許可をリクエストします。

  • NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysUsageDescription

Place Picker に対しては「使用時のみ」の使用許可をリクエストすれば十分ですが、アプリの他の機能に対しては「常時」使用許可が必要な場合もあります。ユーザーに対して、位置情報サービスを必要とする理由を通知するための文字列を各キーに追加します。次に例を示します。

<key>NSLocationWhenInUseUsageDescription</key>
<string>Show your location on the map</string>

Place Picker を追加する

以下のコード スニペットでは、シドニーを中心に GMSPlacePicker を作成し、選択した場所の詳細情報を出力しています。

Swift

// The code snippet below shows how to create and display a GMSPlacePickerViewController.
@IBAction func pickPlace(_ sender: UIButton) {
  let config = GMSPlacePickerConfig(viewport: nil)
  let placePicker = GMSPlacePickerViewController(config: config)

  present(placePicker, animated: true, completion: nil)
}

// To receive the results from the place picker 'self' will need to conform to
// GMSPlacePickerViewControllerDelegate and implement this code.
func placePicker(_ viewController: GMSPlacePickerViewController, didPick place: GMSPlace) {
  // Dismiss the place picker, as it cannot dismiss itself.
  viewController.dismiss(animated: true, completion: nil)

  print("Place name \(place.name)")
  print("Place address \(place.formattedAddress)")
  print("Place attributions \(place.attributions)")
}

func placePickerDidCancel(_ viewController: GMSPlacePickerViewController) {
  // Dismiss the place picker, as it cannot dismiss itself.
  viewController.dismiss(animated: true, completion: nil)

  print("No place selected")
}

Objective-C

// The code snippet below shows how to create and display a GMSPlacePickerViewController.
- (IBAction)pickPlace:(UIButton *)sender {
  GMSPlacePickerConfig *config = [[GMSPlacePickerConfig alloc] initWithViewport:nil];
  GMSPlacePickerViewController *placePicker =
    [[GMSPlacePickerViewController alloc] initWithConfig:config];
  placePicker.delegate = self;

  [self presentViewController:placePicker animated:YES completion:nil];
}

// To receive the results from the place picker 'self' will need to conform to
// GMSPlacePickerViewControllerDelegate and implement this code.
- (void)placePicker:(GMSPlacePickerViewController *)viewController didPickPlace:(GMSPlace *)place {
  // Dismiss the place picker, as it cannot dismiss itself.
  [viewController dismissViewControllerAnimated:YES completion:nil];

  NSLog(@"Place name %@", place.name);
  NSLog(@"Place address %@", place.formattedAddress);
  NSLog(@"Place attributions %@", place.attributions.string);
}

- (void)placePickerDidCancel:(GMSPlacePickerViewController *)viewController {
  // Dismiss the place picker, as it cannot dismiss itself.
  [viewController dismissViewControllerAnimated:YES completion:nil];

  NSLog(@"No place selected");
}

上記のコードサンプルのように、GMSPlacePickerConfig オブジェクトを使って指定された構成で、Place Picker を初期化することができます。Place Picker マップが最初に表示する長方形の領域を定義した GMSCoordinateBounds オブジェクトが含まれている viewport を、構成オブジェクト内で指定します。

ユーザーが場所を選択する Place Picker ダイアログを表示するには、GMSPlacePicker.pickPlaceWithCallback(_:) を呼び出します。

ユーザーがプレイスを選択すると、アプリは pickPlaceWithCallback(_:) で指定されたメソッドへのコールバックを受け取ります。コールバックが呼び出される際は、選択された場所の情報が渡されますが、ユーザーが場所を選択しなかった場合は nil が渡されます。

アプリに属性を表示する

アプリに Place Picker から取得した情報を表示する場合、アプリには属性も表示する必要があります。詳細については、属性をご覧ください。

フィードバックを送信...