以下代码仅返回第一个 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];
}
}];
}
答案 0 :(得分:2)
iOS限制CLGeocoder请求,它会有所不同,但一般只允许50个左右的请求。时间段是未知的。您可以做的是对其进行编码以便一次对一个块进行地理编码,在两者之间留下足够的停顿。只要有可能,一旦读取,您应该存储结果,这样您就不会再次请求相同的地理编码。请在此处记下CLGeocoder文档:CLGeocoder。如果滥用地理编码服务,Apple可能会限制您甚至暂停您的开发者帐户。