我正在使用适用于iOS的Google Places API自动填充功能,并返回placeID。如何从placeID获取GMSAddress?我目前使用lookupPlaceID获取GMSPlace,然后使用reverseGeocodeCoordinate从GMSPlace中的坐标获取GMSAddress。但它要求Google API 3次:AutoComplete,lookupPlaceID,reverseGeocodeCoordinate。
有没有办法直接从PlaceID或GMSPlace获取GMSAddress?
答案 0 :(得分:5)
这是适用于iOS的Google Maps SDK 1.1.0的错误。见here。
正如文档所述here所述,address
属性应在GMSAddress
个实例上公开GMSPlace
。
我刚刚切换到使用REST API。为API编写快速包装并彻底抛弃Google SDK并不算太糟糕。如果您使用Alamofire ping我,我可以分享我写的内容。
答案 1 :(得分:3)
我可以在一次API调用中获取来自placementID的地址,这里是代码:
GMSPlacesClient *placesClient = [[GMSPlacesClient alloc] init];
[placesClient lookUpPlaceID:result.placeID callback:^(GMSPlace *place, NSError *error) {
if (error != nil) {
NSLog(@"Place Details error %@", [error localizedDescription]);
return;
}
if (place != nil) {
NSString *locality = @"";
for (GMSAddressComponent *add in place.addressComponents) {
//locality
NSLog(@"%@",add.type);
NSLog(@"%@",add.name);
//type will be street_name, locality, admin_area, country,
//name will hold the corresponding value
}
} else {
NSLog(@"No place details for %@", result.placeID);
}
}];
答案 2 :(得分:1)
目前,对于此版本的SDK(1.10.5),下面的代码是否安全(足够)?这将在未来6个月内突破的概率是多少?
NSArray* dic = [place valueForKey:@"addressComponents"];
for (int i=0;i<[dic count];i++) {
if ([[[dic objectAtIndex:i] valueForKey:@"type"] isEqualToString:@"street_number"]) {
NSLog(@"street_number: %@",[[dic objectAtIndex:i] valueForKey:@"name"]);
}