LFSPGooglePlacesAutocomplete 1.0.4

LFSPGooglePlacesAutocomplete 1.0.4

测试测试
Lang语言 Obj-CObjective C
许可证 MIT
发布日期上次发布2014年12月

Leo 维护。



  • Matej Bukovinski, Chris Chen 和 Leo

SPGooglePlacesAutocomplete

SPGooglePlacesAutocomplete 是 Google 地点自动补全 API 的一个简单 Objective C 封装。该 API 可以通过返回商业、地址和兴趣点等地点来提供基于文本的地理搜索的自动补全功能,当用户输入时作为结果返回。SPGooglePlacesAutocomplete 还提供将地点结果转换为 CLPlacemark 对象以使用 MKMapView 进行简单映射的支持。

屏幕截图

如何使用

需求

SPGooglePlacesAutocomplete 需要 iOS 6.0 或更高版本的部署目标以及 ARC。

安装

CocoaPods 是向项目添加 SPGooglePlacesAutocomplete 的推荐方式。

  1. 将 pod 条目 pod 'SPGooglePlacesAutocomplete' 添加到 Podfile。
  2. 运行 pod installpod update
  3. 使用 #import "SPGooglePlacesAutocomplete.h" 在需要的地方包含 SPGooglePlacesAutocomplete。

执行查询

实例化一个新的 SPGooglePlacesAutocompleteQuery 并填写您想要指定的属性。

#import "SPGooglePlacesAutocomplete.h"

...

SPGooglePlacesAutocompleteQuery *query = [[SPGooglePlacesAutocompleteQuery alloc] initWithApiKey:@"YourGoogleAPIKey"];
query.input = @"185 berry str"; // search key word
query.location = CLLocationCoordinate2DMake(37.76999, -122.44696);  // user's current location
query.radius = 100.0;   // search addresses close to user
query.language = @"en"; // optional
query.types = SPPlaceTypeGeocode; // Only return geocoding (address) results.

请记住,为浏览器应用提供 GoogleAPIKey,而不是为 iOS 应用提供。

然后,调用 -fetchPlaces 以 ping Google 的 API 并获取结果。返回的数组将返回 SPGooglePlacesAutocompletePlace 类的对象。

[query fetchPlaces:^(NSArray *places, NSError *error) {
    NSLog(@"Places returned %@", places);
}];

如果您需要更新查询(例如,当用户输入时),只需更新适当的属性并再次调用 -fetchPlaces。任何悬而未决的请求将被自动取消,并将发出一个带有更新属性的新请求。

将地点解析为 CLPlacemark

Google 地点自动补全 API 将返回与您查询匹配的地点名称。然而,它不会返回这些结果的经纬度信息。SPGooglePlacesAutocomplete 通过将地点结果解析为地标来处理这个问题。只需在一个 SPGooglePlacesAutocompletePlace 上调用 -resolveToPlacemark 即可。

[query fetchPlaces:^(NSArray *places, NSError *error) {
    SPGooglePlacesAutocompletePlace *place = [places firstObject];
    if (place) {
        [place resolveToPlacemark:^(CLPlacemark *placemark, NSString *addressString, NSError *error) {
            NSLog(@"Placemark: %@", placemark);
        }];
    }
}];

在搜索“地理编码”(地址)地点时,库使用CLGeocoder地理编码地址。在搜索“机构”(商业)地点时,库将自动ping谷歌地点API以获取地理定位商业所需的详细信息。

示例代码

关于如何使用SPGooglePlacesAutocomplete的示例,请参阅附带的示例项目。我在项目中放置了一个功能齐全的谷歌API密钥,请勿在其他地方使用它!