一切就绪!

着手开发前,请先阅读我们的开发者文档

激活 Google Places API for iOS

为帮助您起步,我们将引导您在 Google 开发者控制台中先完成几项任务:

  1. 创建或选择项目
  2. 激活 Google Places API for iOS
  3. 创建相应密钥
继续

地点选取器

地点选取器 UI 小工具

地点选取器是一款简单而灵活的内置 UI 小工具,是 Google Places API for iOS 的一部分。

地点选取器简介

GMSPlacePicker 提供一个 UI 对话框,其中会显示一个交互式地图和一个附近地点列表,地图和列表中包括对应于地理地址和当地商家的地点。用户可以选择一个地点,然后,您的应用即可检索所选地点的详情。

相较于开发自己的 UI 小工具,地点选取器具有以下优点:

  1. 用户体验与使用地点选取器的其他应用(包括 Google 应用和第三方应用)一致。这意味着应用的用户已经了解如何与地点选取器互动
  2. 地图已集成到地点选取器中
  3. 内置辅助工具
  4. 节省开发时间。

地点选取器具有自动填充功能,可根据用户输入的搜索内容显示地点预测。所有地点选取器集成中都有此功能,因此,您无需执行任何其他操作即可启用自动填充。如需了解有关自动填充的更多信息,请参阅地点自动填充

请求地点授权

如果您的应用使用地点选取器,则您必须请求使用位置服务的权限。先将以下其中一个密钥或将两个密钥都添加到 Info.plist 文件中,以请求“使用时”或“始终”授权:

  • NSLocationWhenInUseUsageDescription
  • NSLocationAlwaysUsageDescription

对于地点选取器,请求“使用中”授权就以足够,但您可能需要为应用中的其他功能请求“始终”授权。为每个密钥添加一个字符串,告知用户您需要位置服务的原因。例如:

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

添加地点选取器

以下代码段展示了如何创建以悉尼为中心的 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 对象以给定配置初始化地点选取器。在 configuration 对象中,指定一个 viewport,其中包含的 GMSCoordinateBounds 对象定义地点选取器的地图必须显示的初始矩形区域。

调用 GMSPlacePicker.pickPlaceWithCallback(_:) 显示地点选取器对话框,提示用户选择地点。

当用户选择地点后,您的应用会收到 pickPlaceWithCallback(_:) 中提供的方法回调。调用回调时使用所选地点,或者如果用户未选择地点,则使用零值进行调用。

在应用中显示提供方说明

如果您的应用要显示通过地点选取器获取的信息,则该应用还必须显示提供方说明。请参阅关于提供方说明的文档。

发送以下问题的反馈:

此网页
location_on
Google Places API for iOS