以下代码仅返回前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];
         }
     }];


}

最佳答案

iOS会限制CLGeocoder的请求,该请求有所不同,但通常一次允许50个左右的请求。时间段是未知的。您可以做的是对其进行编码,以便一次对一个块进行地理编码,从而在两者之间留出足够的暂停时间。只要有可能,一旦读取就应该存储结果,这样就不必再次请求相同的地理编码。在此处记录CLGeocoder文档:CLGeocoder。如果滥用了地理编码服务,Apple可能会限制您,甚至暂停您的开发人员帐户。

10-08 05:33