ASJGooglePlaces 1.2

ASJGooglePlaces 1.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布上次发布2022年1月

Sudeep 维护。



  • 作者
  • Sudeep

ASJGooglePlaces

这个库是一系列类,它们为 Google Places 和 Maps Directions REST API 的几个特性添加了包装功能。请注意,如果您在项目中使用 Google Maps SDK,可能不需要这个库。Maps SDK 包含提供与该库相同功能的类,我建议您使用它们而不是这个。

安装

CocoaPods 是安装此库的首选方式。将此命令添加到你的 Podfile

pod 'ASJGooglePlaces'

先决条件

大多数 API 需要密钥才能正常工作。Maps Directions API 是一个例外,在这里使用。要创建密钥,请登录到 Google Cloud Console,启用所需的 API 并在凭证部分生成您的密钥。

alt tag alt tag

请注意,您将需要 API 密钥才能运行示例项目。您需要一个浏览器密钥用于发出 API 请求,还需要一个配置为项目包标识符的 iOS 密钥;用于在 GMSMapView 上显示路线。

使用

在进行其他操作之前,您需要设置您的API密钥。通常,这应该在AppDelegate.m中完成。导入#import "ASJGooglePlaces.h",并在您的didFinishLaunchingWithOptions:方法中添加以下命令

[ASJConstants sharedInstance].apiKey = @"api_key";

如果您在应用程序中使用了Google Maps,则需要导入#import <GoogleMaps/GMSServices.h>并添加此行

[GMSServices provideAPIKey:@"api_key"];

您可以使用以下五个类调用不同的API

  1. ASJAutocompleteAPI (详细信息)
  2. ASJDirectionsAPI (详细信息)
  3. ASJPlaceDetailsAPI (详细信息)
  4. ASJPlaceIDAPI (详细信息)
  5. ASJPlacePhotosAPI (详细信息)
  6. ASJGeocoderAPI (详细信息)

ASJAutocompleteAPI

- (void)autocompleteForQuery:(NSString *)query completion:(AutocompleteBlock)completion;

对于提供的查询,此方法返回一个匹配输入的ASJPlace数组。Google默认每次提供五个地点。

@property (assign, nonatomic) NSUInteger minimumQueryLength;

在自动完成查询之前控制查询的最小长度。

ASJDirectionsAPI

- (void)directionsFromOriginNamed:(NSString *)origin destinationNamed:(NSString *)destination completion:(DirectionsBlock)completion;

- (void)directionsFromOrigin:(CLLocationCoordinate2D)origin destination:(CLLocationCoordinate2D)destination completion:(DirectionsBlock)completion;

这些方法获取两个地点之间的路线多边形;一个'起点'和一个'目的地'。它们可以是NSString或者通过它们的坐标提供。这两种方法都将返回一个包含以下信息的ASJDirections数组

  • 起点名称
  • 目的地名称
  • 起点坐标
  • 目的地坐标
  • 两个地点之间的多边形

可以将多边形用于在GMSMapView上绘制两个地点之间的GMSPolyline。请参阅示例项目,以了解如何进行操作。

ASJPlaceDetailsAPI

- (void)placeDetailsForPlace:(NSString *)place completion:(PlaceDetailsBlock)completion;

- (void)placeDetailsForPlaceID:(NSString *)placeID completion:(PlaceDetailsBlock)completion;

这些方法获取某个地点的详细信息。您可以通过提供地点名称或唯一的地标识符来获取信息。您可以通过地点ID API 获取该标识符。无论是哪种方法,完成后的结果都将是一个 ASJPlaceDetails 对象。如果无详细信息可返回,它可能返回 nil

注意:以下信息中的一些可能因可用性而返回 nil

  • 地点名称
  • 地址
  • 电话
  • 网站
  • 坐标
  • 照片

ASJPlaceIDAPI

- (void)placeIDForPlace:(NSString *)place completion:(PlaceIDBlock)completion;

提供地点名称并获取对应的唯一地点ID。如果没有找到任何匹配项,则返回 nil。此ID由谷歌分配。

ASJPlacePhotosAPI

- (void)placePhotosForPlace:(NSString *)place completion:(PlacePhotosBlock)completion;

- (void)placePhotosForPlaceID:(NSString *)place completion:(PlacePhotosBlock)completion;

返回一个由 ASJPhoto 对象组成的数组,对于提供的地点名称或ID。如果没有可用的照片或地点本身未找到,则返回 nil

ASJGeocoderAPI

- (void)geocoderForPlaceID:(NSString *)placeID completion:(GeocoderBlock)completion;

- (void)geocoderForCoordinate:(CLLocationCoordinate2D)coordinate completion:(GeocoderBlock)completion;

对于提供的地点ID或坐标,返回一个 ASJGeocode 对象的数组。如果没有找到可用的地点,则返回 nil

待办事项

  • 重构项目和库。
  • 添加文档。
  • 通过地点ID添加地点照片。
  • 添加可空性注解。
  • 处理无效的用户输入。
  • 为模型添加更多信息。

感谢

  • Deepti Walde,感谢您添加代码以获取所有可用方向
  • MeGaPk,感谢您添加新的功能——地理编码

许可协议

ASJGooglePlaces可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。