我正在开发一个需要检测用户位置的应用程序.
我需要提取用户的国家和城市代码.
我能够使用locationManager中的地标获取国家/地区代码:didUpdatetoLocation:fromLocation:如下所示:
CLGeocoder * geoCoder = [[CLGeocoder alloc] init]; [geoCoder reverseGeocodeLocation:newLocation completionHandler:^(NSArray *placemarks,NSError *error) { MKPlacemark * mark = [[MKPlacemark alloc] initWithPlacemark:[placemarks objectAtIndex:0]]; Nsstring * code = mark.countryCode; NSLog(@"country code: %@",code); }];
那么,是否有任何解决方案可以帮助我找到用户所在城市的IATA 3-Letter Code?
解决方法
我建议你使用OpenFlights提供的数据库:
http://openflights.org/data.html(@ Ben-G间接链接).
有一个“Web服务”作为一个表单:http://openflights.org/html/apsearch但我认为考虑到数据库的大小(约9200个条目),实际上最好在应用程序中导入它并直接查询它,特别是如果你要查询很多(更多的查询…如果使用网络服务更多的流量,因此更多的延迟和减少的用户体验等).
虽然我想知道为什么你不会根据用户的位置计算一个圆圈,然后查询数据库中某个特定半径范围内的任何机场.这将为您提供所有机场的下落,显然是城市和国家.如果主要由机场服务的城市与用户所在城市不对应,则获取给定用户所在城市的机场代码可能不会给您任何信息.