GoogleKit 0.3.2

GoogleKit 0.3.2

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最后发布2016年3月

Max Sokolov 维护。



GoogleKit 0.3.2

GoogleKit 是用于 Google Maps API 的 Objective-C 封装库。你要为 X 创建一个类似于 Uber 的应用吗?那么,GoogleKit 就是你的不二选择!

要求和依赖

支持 iOS 7 和以上版本,要求自动引用计数(ARC)。

安装

使用方法

简单地将 GoogleKit.h 导入您的控制器或 .pch 文件。

API 密钥

  1. 请遵循 此链接
  2. 在左侧菜单中找到 APIs & auth -> Credentials
  3. Public API access 部分查找并点击 Create a new key 按钮,然后选择 iOS key

确保在 APIs & auth -> APIs 部分启用了 Geocoding API 和 Places API。在 iOS key 出现问题时,请使用 Browser key

设置

为每个请求全局提供 API 密钥

[GKQuery provideAPIKey:GOOGLE_API_KEY];

或为不同的请求使用不同的密钥

GKQuery *query = [GKQuery query];
query.key = @"key";

启用日志记录以检查原始请求和响应。

[GKQuery loggingEnabled:YES];

地理编码(经纬度查找)

地理编码功能可以将地址(例如“加州山景城1600阿姆菲瑟特路”)转换为地理坐标(例如纬度 37.423021 和经度 -122.083739),您可用这些坐标放置标记或定位地图。有关详细信息,请查阅官方 Google 文档

GKGeocoderQuery *query = [GKGeocoderQuery query];

// required parameters
query.key = @"key"; // or client and signature parameters if you are using Maps for Work
query.address = @"some address";

// optional parameters
query.language = @"en";
query.region = @"us";
query.components = @[ @"country:US" ];

// perform query
[query lookupLocation:^(NSArray *results, NSError *error) {

    GKGeocoderPlace *place = [results firstObject];
    //place.formattedAddress;
}];

逆向地理编码(地址查找)

逆向地理编码可以将地图上的位置转换为可读地址。有关详细信息,请查阅官方 Google 文档

GKGeocoderQuery *query = [GKGeocoderQuery query];

// required parameters
query.key = @"key";
query.coordinate = CLLocationCoordinate2DMake(0.0f, 0.0f);

// optional parameters
query.language = @"en";
query.resultType = @[ @"street_address" ];
query.locationType = @[ @"ROOFTOP" ];
query.postalCode = @"000000";

// perform query
[query lookupAddress:^(NSArray *results, NSError *error) {

    GKGeocoderPlace *place = [results firstObject];
}];

地点自动补全

地点自动补全提供基于位置的自动补全功能。有关详细信息,请查阅官方 Google 文档

GKPlaceAutocompleteQuery *query = [GKPlaceAutocompleteQuery query];

// required parameters
query.key = @"key";
query.input = @"wall street";

// optional parameters
query.coordinate = CLLocationCoordinate2DMake(55.738407f, 37.612306f); // New York City
query.types = @[ @"geocode" ];
query.components = @[ @"country:us" ];
query.radius = 10000;
query.offset = 3;
query.language = @"en";

// perform query
[query fetchPlaces:^(NSArray *results, NSError *error) {

    GKPlaceAutocomplete *place = [results firstObject];
}];

GKPlaceAutocompleteQuery 内置了缓存,所以您不需要担心具有相同输入的查询。

周边搜索

周边搜索允许您在指定的区域内搜索地点。您可以通过提供关键词或指定要搜索地点的类型来细化您的搜索请求。请参阅官方谷歌文档

GKPlacesNearbySearchQuery *query = [GKPlacesNearbySearchQuery query];

// required parameters
query.key = @"key";
query.coordinate = CLLocationCoordinate2DMake(40.71448f, -74.00598f); // New York City
query.rankByDistance = NO; // if rankByDistance sets to YES radius will be ignored
query.radius = 3000;

// optional parameters
query.language = @"en";
query.keyword = @"keyword";
query.minprice = 0;
query.maxprice = 4;
query.name = @"name";
query.opennow = YES;
query.types = @[ @"library" ];
query.nextPageToken = @"token";

// perform query
[query searchPlaces:^(NSArray *results, NSString *nextPageToken, NSError *error) {

    GKPlace *place = [results firstObject];
}];

文本搜索

文本搜索根据字符串返回一组地点的信息,例如 "纽约的披萨" 或 "渥太华附近的鞋店"。该服务会响应一个与文本字符串和任何设置的地点偏好匹配的地点列表。搜索响应将包括地点列表,您可以为响应中的任何地点发送地点详细信息请求以获取更多信息。请参阅官方谷歌文档

GKPlacesTextSearchQuery *query = [GKPlacesTextSearchQuery query];

// required parameters
query.key = @"key";
query.text = @"pizza in New York";

// optional parameters
query.language = @"en";
query.coordinate = CLLocationCoordinate2DMake(40.71448f, -74.00598f);
query.radius = 3000;
query.minprice = 0;
query.maxprice = 4;
query.opennow = YES;
query.types = @[ @"cafe" ];

// perform query
[query searchPlaces:^(NSArray *results, NSError *error) {

    GKPlace *place = [results firstObject]; 
}];

雷达搜索

雷达搜索允许您一次性搜索最多 200 个地点,但比文本搜索或周边搜索请求通常返回的细节要少。请参阅官方谷歌文档

GKPlacesRadarSearchQuery *query = [GKPlacesRadarSearchQuery query];

// required parameters
query.key = @"key";
query.coordinate = CLLocationCoordinate2DMake(40.71448f, -74.00598f); // New York City
query.radius = 3000;

// optional parameters
query.language = @"en";
query.keyword = @"";
query.minprice = 0;
query.maxprice = 4;
query.name = @"";
query.opennow = YES;
query.types = @[ @"library" ];

// perform query
[query searchPlaces:^(NSArray *results, NSError *error) {

    GKPlace *place = [results firstObject];
    // place.place_id
}];

地点详情

一旦您从地点搜索中获得了 place_id,您可以通过启动地点详细信息请求来请求更多关于特定机构或兴趣点的详细信息。地点详细信息请求返回关于指定地点更全面的信息,例如其完整地址、电话号码等。请参阅官方谷歌文档

GKPlaceDetailsQuery *query = [GKPlaceDetailsQuery query];

// required parameters
query.placeId = @"id";

// optional parameters
query.language = @"en";
query.extensions = @"review_summary";

// perform query
[query fetchDetails:^(GKPlaceDetails *place, NSError *error) {

}];

支持

如果您遇到问题,请随时提交问题。

许可

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