使用此代码:
- (void)geocodeAddress:(NSString *)address state:(NSString *)state zip:(NSString *)zip completion:(ResultAndErrorHandler)completion {
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:[NSString stringWithFormat:@"%@, %@, %@, United States", address, state, zip] completionHandler:^(NSArray* placemarks, NSError* error){
if (error) {
completion(nil, error);
return;
}
CLPlacemark *placemark = [placemarks firstObject];
completion(placemark, nil);
}];
}
问题是它永远不会抛出错误。无论我为“地址”输入什么,它只会在邮政编码中选择一个随机位置。
例如,如果我为地址“CA”输入“x z”表示状态,输入“90210”表示拉链,则只需在此邮政编码中为地址“x z”选择最接近的匹配。
但“x z”显然是无效的地址。我怎样才能发现这不是真正的地址,而地理编码器只是猜测?