需要从CLGeocoder获取超过限制数量的坐标

3

以下代码仅返回前10个地址的坐标。但我需要超过100个地址以便存储到数据库中。地理编码器是否有限制?我该怎么办?

 for(int i=0;i<count;i++)
{

    CLGeocoder *geoCode = [[CLGeocoder alloc] init];

    [geoCode geocodeAddressString:strcity completionHandler:^(NSArray *placemarks, NSError *error)
     {
         if (!error)
         {
             CLPlacemark *place = [placemarks objectAtIndex:0];
             CLLocation *location = place.location;
             CLLocationCoordinate2D coord = location.coordinate;

             NSString *tempLati=[[NSString alloc]initWithFormat:@"%g",coord.latitude];
             NSString *tempLongi=[[NSString alloc]initWithFormat:@"%g",coord.longitude];




             [objCountries.countryLatitude addObject:tempLati];
             [objCountries.countryLongitude addObject:tempLongi];

             [geoCode cancelGeocode];
         }
     }];


}
1个回答

2
iOS会对CLGeocoder的请求进行限制,一次通常只允许50个左右的请求。时间限制未知。您可以编写代码,分块逆地理编码,并在每次请求之间留出足够的时间间隔。尽可能地,在读取数据后,应将结果存储在本地,以免重复请求相同的逆地理编码。请查看CLGeocoder文档:CLGeocoder。如果滥用地理编码服务,Apple可能会限制或暂停您的开发者帐户。

好的,非常感谢。您知道如何设置地理编码请求之间的延迟时间吗?是否有任何在地理编码响应时调用的方法? - Will Smith
我认为使用NSTimer可能是个不错的选择 - 你可以使用重复选项来逐个地对数字进行地理编码,并在之间设置短暂的延迟,然后一旦所有位置都被地理编码了,就使NSTimer失效。SO上有很多NSTimer的例子。 - Jonathan Wareham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接