一切就绪!

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

激活 Google Places API for iOS

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

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

地点添加

您可以使用 Google Places API for iOS 将地点添加至 Google Places 数据库。新添加的地点在添加后不久即可用于您的应用,并且将被添加到可能添加至 Google Places 数据库和 Google 地图的地点审核队列中。

为了让地点更可能通过审核流程并添加到 Google Places 数据库中,添加请求应提供尽可能多的信息。具体来说,地址、电话号码和网站非常重要。

  1. 添加地点
  2. 处理多个地点 ID 和地点 ID 作用域

添加地点

创建一个 GMSUserAddedPlace,然后将其传递给 GMSPlacesClient addPlace:callback:

在创建 GMSUserAddedPlace 时,请包括以下信息:

  • 必填:商家、景点或其他地点的完整文本名称。限制为 255 个字符。
  • 必填:可人工识别的地点 address。如果地点具有格式正确、易于人工识别的地址,则更有可能通过审核流程并被添加到 Google Places 数据库中。
  • 必填:指定地点位置的 coordinate (CLLocationCoordinate2D) 对象。
  • 可选:地点的 phoneNumber。这是以国际格式表示的电话号码。国际格式包含国家/地区代码,并且带有一个加号 (+) 前缀。例如,美国分公司 Google 山景城的国际电话号码为 +1 650-253-0000。如果地点具有格式正确的电话号码,则更有可能通过审核流程并被添加到 Google Places 数据库中。:您必须提供 phoneNumber 和/或 website
  • 必填:描述此地点特征的地点类型列表。仅表 1 类型有效。
  • 可选:website URI 对象,包含此地点官方网站的网址,如商家主页。如果地点具有格式正确的网址,则更有可能通过审核流程并被添加到 Google Places 数据库中。:您必须提供 phoneNumber 和/或 website

还要提供用于处理结果的回调方法。API 调用指定的回调方法,传入为新创建地点产生的 GMSPlace 对象。

以下代码示例会在澳大利亚皮尔蒙特添加一个名为“Google Shoes!”的地点。

Swift

let userAddedPlace = GMSUserAddedPlace()
userAddedPlace.name = "Google Shoes!"
userAddedPlace.address = "48 Pirrama Road, Pyrmont, NSW 2009, Australia"
userAddedPlace.coordinate = CLLocationCoordinate2DMake(-33.8669710, 151.1958750)
userAddedPlace.phoneNumber = "(02) 9374 4000"
userAddedPlace.website = "http://www.google.com.au/"
userAddedPlace.types = ["shoe_store"]
placesClient.add(userAddedPlace, callback: { (place, error) -> Void in
  if let error = error {
    print("Add Place error: \(error.localizedDescription)")
    return
  }

  if let place = place {
    print("Added place with placeID \(place.placeID)")
    print("Added Place name \(place.name)")
    print("Added Place address \(place.formattedAddress)")
  }
})

Objective-C

GMSUserAddedPlace *userAddedPlace = [[GMSUserAddedPlace alloc] init];
userAddedPlace.name = @"Google Shoes!";
userAddedPlace.address = @"48 Pirrama Road, Pyrmont, NSW 2009, Australia";
userAddedPlace.coordinate = CLLocationCoordinate2DMake(-33.8669710, 151.1958750);
userAddedPlace.phoneNumber = @"(02) 9374 4000";
userAddedPlace.website = @"http://www.google.com.au/";
userAddedPlace.types = @[@"shoe_store"];

[_placesClient addPlace:userAddedPlace callback:^(GMSPlace *place, NSError *error) {
  if (error != nil) {
    NSLog(@"User Added Place error %@", [error localizedDescription]);
    return;
  }

  NSLog(@"Added place with placeID %@", place.placeID);
  NSLog(@"Added Place name %@", place.name);
  NSLog(@"Added Place address %@", place.formattedAddress);
}];

产生的 GMSPlace 对象具有唯一的地点 ID,您的应用可以从该地点开始检索地点详情。所添加的地点在添加不久后也会出现在应用所发起的获取当前地点请求的结果中,以及应用所显示的地点选取器中。作用域由用于生成 API 密钥的项目 ID 确定。

新添加的地点将进入将被考虑添加到 Google Places 数据库的地点审核队列中。未通过审核流程的地点仍可通过地点 ID 在提交此地点的应用中检索,但将不再显示在获取当前地点请求结果、API 选取器或任何其他 API 方法中。通过审核的地点将对所有应用以及在 Google 地图上可见。

处理多个地点 ID 和地点 ID 作用域

每个地点 ID 都只能指代一个地点,但单个地点可以具有多个地点 ID。处理一个地点有多个 ID 的最常见情况是,您最初添加某个地点时其作用域仅限于您的应用,但后来该地点通过审核,其作用域扩大为 Google 范围。

添加地点后,您会立即收到该新地点的地点 ID。此地点 ID 仅适用于您的应用范围内。然后,该地点将进入审核队列,等待获批添加到 Google Places 数据库中。如果获得批准,该地点将收到一个新的地点 ID,该 ID 可用于所有应用以及 Google 地图。

通过指定地点 ID 请求地点时,可以确信会始终在响应中获得相同地点(如果该地点仍然存在)。

但请注意,响应可能包含与请求中的地点 ID 不同的 ID。如需了解详细信息,请参阅地点 ID 概览

发送以下问题的反馈:

此网页
location_on
Google Places API for iOS