아래 코드를 사용하여 지오 코딩을 통해 위치 정보를 가져온 다음 Google지도보기에지도 핀을 추가합니다. 이 코드는 For 루프를 사용하여 데이터베이스의 각 위치를 순환합니다. 문제는 코드가 실행될 때 장소의 약 50 %에 대한 위치 정보를 반환하지 못한다는 것입니다. 이러한 실패한 항목은 아래 코드에 따라 failedLoad 배열에 저장됩니다.Google 지오 코딩이있는 For 루프 - 높은 오류율 - iPhone
누구에게 제안 할 수 있습니까? 또한 이러한 실패한 항목은 "failedLoad"배열에 저장되므로 누락 된 핀을로드 할 때이 배열을 사용할 수 있습니까?
편집
실패한 항목은 내가 너무 빨리 항목을 제출하고 있음을 의미 620 오류에 기인한다. 코드에 지연을 어떻게 추가 할 수 있습니까?
감사합니다. 대신 for 루프를 사용하여 동시에 모든 요청을 보낼의
-(void)displayPlaces {
for (PlaceObject *info in mapLocations) {
// GET ANNOTATION INFOS
NSString * addressOne = info.addressOne;
NSString * name = info.name;
NSString * postCode = info.postCode;
NSString * addressTwo = [addressOne stringByAppendingString:@",London,"];
NSString * address = [addressTwo stringByAppendingString:postCode];
NSString* urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", [address stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL* url = [NSURL URLWithString:urlString];
NSURLRequest* req = [NSURLRequest requestWithURL:url];
OHURLLoader* loader = [OHURLLoader URLLoaderWithRequest:req];
[loader startRequestWithCompletion:^(NSData* receivedData, NSInteger httpStatusCode) {
NSString* locationString = loader.receivedString;
NSArray *listItems = [locationString componentsSeparatedByString:@","];
double latitude = 0.0;
double longitude = 0.0;
if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) {
latitude = [[listItems objectAtIndex:2] doubleValue];
longitude = [[listItems objectAtIndex:3] doubleValue];
}
else {
NSLog(@"Error %@",name);
[failedLoad addObject : info];
}
CLLocationCoordinate2D coordinate;
coordinate.latitude = latitude;
coordinate.longitude = longitude;
MyLocation *annotation = [[[MyLocation alloc] initWithName:name address:address coordinate:coordinate] autorelease];
[mapViewLink addAnnotation:annotation];
} errorHandler:^(NSError *error) {
NSLog(@"Error while downloading %@: %@",url,error);
}];
}
}
Google API에는 다양한 쿼리 속도 제한이 있습니다 (예 : 초당 최대 10 개의 요청 API를 사용할 계획이라면이 모든 것을 RTFM해야합니다. –
위치를로드하지 못하면 반환 된 문자열을 기록하지 않는 것이 좋습니다. 왜 실패하는지 즉시 즉시 알 수 있습니다. – JeremyP
감사합니다. 제가 이해하는 620 오류는 제가 제출하는 비율 때문입니다. 코드에 어떻게 지연을 넣을 수 있습니까? – GuybrushThreepwood