需要来自 CLGeocoder 的坐标超过限制
Posted
技术标签:
【中文标题】需要来自 CLGeocoder 的坐标超过限制【英文标题】:Need more coordinates from CLGeocoder than the limit 【发布时间】:2012-10-09 05:31:31 【问题描述】:以下代码仅返回前 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】:ios 会限制 CLGeocoder 请求,它会有所不同,但通常一次允许 50 个左右的请求。时间段未知。您可以做的是将其编码为一次对一个块进行地理编码,并在两者之间留出足够的停顿。一旦读取,您应该尽可能存储结果,这样您就不会再次请求相同的地理编码。请注意此处的 CLGeocoder 文档:CLGeocoder。如果地理编码服务被滥用,Apple 可以限制您甚至暂停您的开发者帐户。
【讨论】:
好的。非常感谢。你知道如何设置地理编码请求之间的延迟时间吗?地理编码响应时是否有任何方法调用? 我认为使用 NSTimer 可能会很好 - 您可以使用 repeat 选项一次对一个数字进行地理编码,并在两者之间有很短的延迟,然后在所有位置都被地理编码后使 NSTimer 无效。 SO上有很多NSTimer的例子。以上是关于需要来自 CLGeocoder 的坐标超过限制的主要内容,如果未能解决你的问题,请参考以下文章