HNKGooglePlacesAutocomplete, Google包装API的对象包装器

分享于 

13分钟阅读

GitHub

  繁體 雙語
A better Obj-C wrapper for the Google Places Autocomplete API
  • 源代码名称:HNKGooglePlacesAutocomplete
  • 源代码网址:http://www.github.com/hkellaway/HNKGooglePlacesAutocomplete
  • HNKGooglePlacesAutocomplete源代码文档
  • HNKGooglePlacesAutocomplete源代码下载
  • Git URL:
    git://www.github.com/hkellaway/HNKGooglePlacesAutocomplete.git
    Git Clone代码到本地:
    git clone http://www.github.com/hkellaway/HNKGooglePlacesAutocomplete
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/hkellaway/HNKGooglePlacesAutocomplete
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    HNKGooglePlacesAutocomplete

    CocoaPodsObjective-CLicenseCocoaPodsBuild Status

    Google位置自动完成API的objective-c 包装器

    背景

    HNKGooglePlacesAutocomplete是Google位置自动完成API的objective-c 包装器。 它封装了与 SPGooglePlacesAutocomplete 和 Google Place-to-CLPlacemark翻译相同的核心功能,以现代化方法。

    改进包括:

    • 利用了现代的经过审查的吊舱( AFNetworking,Mantle )
    • 代码使用Kiwi进行良好的测试
    • 文档已满
    • 使用CocoaPods设计可以重用性和

    通信

    依赖项

    从 1.1版本开始,HNKGooglePlacesAutocomplete使用地幔 2.0. 如果你需要地层 1. x, 版本 1.0.1可以使用,但是注意,只有版本 1.1 + 将包含新的更新。

    正在启动

    CocoaPods安装

    是 objective-c的依赖项管理器,它自动化和简化了在项目中使用 3个rd类库的流程。 CocoaPods是在项目中合并HNKGooglePlacesAutocomplete的首选方法;如果你不熟悉如何安装CocoaPods或者如何创建 Podfile。

    Podfile
    pod "HNKGooglePlacesAutocomplete", "~> 1.1"

    API

    文档

    HNKGooglePlacesAutocomplete中的模型直接反映了 Google Places Autocomplete API提供的对象- 查看文档获取数据提供的完整图片。

    记住,便捷方法也可以用来获取其他地点相关信息。

    密钥

    HNKGooglePlacesAutocomplete使用 Google位置自动完成 API。 你将需要这里服务的API密钥才能使用 HNKGooglePlacesAutocomplete。

    • 创建一个开发者帐户
    • 定义项目的垂直标高.
    • 打开Google位置 API Web服务
    • 在项目凭证的API中找到你的API密钥

    CoreLocation框架

    HNKGooglePlacesAutocomplete使用 CoreLocation 框架。 确保这里框架已经添加到你的Xcode设置中。

    核心类

    这些类构成了HNKGooglePlacesAutocomplete的核心功能

    • HNKGooglePlacesAutocompletePlaceQuery - 用于查询用于放置建议的API
    • HNKGooglePlacesAutocompletePlace - 从查询中返回对象

    命令行实用程序

    • CLPlacemark+HNKAdditions.h - 提供从 HNKGooglePlacesAutocompletePlaceCLPlacemark的转换

    用法

    设置

    如果没有首先提供 HNKGooglePlacesAutocomplete的键( 请参见 API密钥库。),就不能发出请求。 获得API密钥后,可以通过在 HNKGooglePlacesAutocompleteQuery ( 通常在 AppDelegate 中) 上调用 setupSharedQueryWithAPIKey: 来设置 HNKGooglePlacesAutocomplete:

    setupSharedQueryWithAPIKey:
    [HNKGooglePlacesAutocompleteQuery setupSharedQueryWithAPIKey:@"YOUR_API_KEY"];

    你应该用你的Google位置API键替换 YOUR_API_KEY

    查询

    HNKGooglePlacesAutocompleteQuery 负责处理位置的查询。 一旦完成了设置,就可以进行查询[HNKGooglePlacesAutocopmleteQuery sharedQuery]

    fetchPlacesForSearchQuery:completion:
    [[HNKGooglePlacesAutocompleteQuery sharedQuery] fetchPlacesForSearchQuery:@"Amoeba" 
     completion:^(NSArray *places, NSError *error) {
     if (error) {
     NSLog(@"ERROR: %@", error);
     } else {
     for (HNKGooglePlacesAutocompletePlace *place in places) {
     NSLog(@"%@", place);
     }
     }
     }
    ];

    成功时,completion 块提供 HNKGooglePlaceAutcompletePlace 对象的array。 如果未成功,则可以在 error 对象中找到错误信息。

    从查询返回 HNKGooglePlacesAutocompletePlace 对象并表示该查询的建议位置。

    来自位置的 CLPlacemark

    HNKGooglePlacesAutocomplete带有一个类别,这种类别可以帮助将 HNKGooglePlacesAutocompletePlace s 转换为 CLPlacemark s - 这通常在地图上放置引脚时使用。 要将位置转换为 CLPlacemark,首先要包含适当的标题: #import"CLPlacemark+HNKAdditions.h" 然后按如下方式调用:

    hnk_placemarkFromGooglePlace:apiKey:completion:
    [CLPlacemark hnk_placemarkFromGooglePlace:place
     apiKey:YOUR_API_KEY
     completion:^(CLPlacemark *placemark, NSString *addressString, NSError *error) {
     if(error) {
     NSLog(@"ERROR: %@", error);
     } else {
     NSLog(@"PLACEMARK: %@", placemark);
     }
     }
    ];

    如果需要,应该将 YOUR_API_KEY 替换为 Google API键;hnk_placemarkFromGooglePlace 使用你的API密钥查询Google地址的API。

    为此,在安装期间提供 HNKGooglePlacesAutocompleteQuery的API密钥可以作为属性使用: [HNKGooglePlacesAutocompleteQuery sharedQuery].apiKey

    高级主题

    use设置 described 查询,位置和CLPlacemark from使用HNKGooglePlacesAutocomplete所需要的核心功能。 以下部分描述在特定情况下可能使用的其他主题。

    错误

    HNKGooglePlacesAutocomplete返回的错误有一个以 com.hnkgoogleplacesautocomplete 开头的域。

    可以在对象属性的errorlocalizedDescription 中找到错误的简短描述。

    如果 error 有基础错误,例如由 CLGeocoder 返回的错误,则可以在对象字典的erroruserInfo 中找到它,通过 NSUnderlyingError 键来查找它。

    高级查询主题

    带可选参数的查询

    可选参数可以用于限制Google位置API在某些方面返回的结果。

    • HNKGooglePlacesAutocompleQueryConfig - 用于为请求提供可选参数值的对象

    配置属性包括:

    • country - restrict中限制结果的国家,必须是两个字符,ISO 3166兼容国家代码,例如法国"来自"
    • filter - a HNKGooglePlacesTypeAutocompleteFilter 将结果限制为特定的位置类型的值。
    • language - 应当表示结果的语言;必须是支持google语言的之一。
    • latitude & longitude - 结果应该有偏差的位置
    • offset - 请求中使用了多少个字符
    • searchRadius - 偏移结果的距离( 以米为单位)
    fetchPlacesForSearchQuery:configurationBlock:completion:

    除了 fetchPlacesForSearchQuery:completion:HNKGooglePlacesAutocompleteQuery 提供 fetchPlacesForSearchQuery:configurationBlock:completion: 允许将可选参数应用于 查询。

    [[HNKGooglePlacesAutocomplete sharedQuery] fetchPlacesForSearchQuery:@"Amo"configurationBlock:(HNKGooglePlacesAutocompleteQueryConfig *config) {
     config.country = @"fr";
     config.filter = HNKGooglePlaceTypeAutocompleteFilterCity;
     config.language = @"pt";
     }
     completion:^(NSArray *places, NSError *error) { 
     // Completion here  }
    ];

    可以在 configurationBlock 中设置查询配置属性的任何或者全部。 如果未设置,则将使用默认值

    上面的示例指定返回的位置应限制为法国,应该是城市,应该列在葡萄牙语中。

    如果要使用特定的查询配置来重新创建每个查询,那么设置应该通过 setupSharedQueryWithAPIKey:configurationBlock 包含查询配置:

    默认查询配置

    每个 HNKGooglePlacesAutocompleteQuery 都有一个 configuration,不管它是否显式提供。

    默认配置值为:

    • country = nil
    • filter = HNKGooglePlacesTypeAutocompleteFilterAll
    • language = nil
    • latitudelongitude = 0 方式( 表示无位置偏差的google )
    • offset = NSNotFound
    • searchRadius = 20000000 方式( 指示没有特定搜索半径的google )

    高级安装主题

    setupSharedQueryWithAPIKey:configurationBlock:

    除了 setupSharedQueryWithAPIKey:HNKGooglePlacesAutocompleteQuery 提供 setupSharedQueryWithAPIKey:configurationBlock: 若要指定要应用于的可选参数,请在每个查询 Query Query。

    [HNKGooglePlacesAutocompleteQuery setupSharedQueryWithAPIKey:@"YOUR_API_KEY"configurationBlock:(HNKGooglePlacesAutocompleteQueryConfig *config) {
     config.country = @"jp";
     config.filter = HNKGooglePlaceTypeAutocompleteFilterEstablishment;
     config.language = @"ru";
     }
    ];

    上面的例子指出,应该将从每个查询返回的位置限制为日本,应该是业务机构。

    高级地点主题

    子字符串
    • HNKGooglePlacesAutocompletePlaceSubstring

    如果应用程序中的用户文本显示在结果集中,则 HNKGooglePlacesAutocompletePlace 对象具有描述输入结果文本中输入项的位置的array。这很有用,如果应用程序要突出显示用户文本。

    例如如果用户键入了"变形",结果位置建议有"amoeba音乐,电报大道,伯克利,CA,美国",则 substrings array 将包含一个条目,表示 phrase"变形"从字符 0到 6的name

    电子邮件地址
    • HNKGooglePlacesAutocompletePlaceTerm

    HNKGooglePlacesAutocompletePlace 对象有一个 terms array,它标识返回的name的部分。

    例如如果用户输入了"变形",结果位置建议具有"amoeba音乐,电报大道,伯克利,CA,美国",则 terms array 将包含条目,其中包含术语"amoeba音乐"。"电报大道"。"伯克利"。"CA"和 crfs。

    Credits

    HNKGooglePlacesAutocomplete是由 Harlan Kellaway创建的。 它是由 SPGooglePlacesAutocomplete 激发的。

    感谢所有的贡献者。


    API  AUTO  WRAP  换行  Place  自动完成  
    相关文章