使用CLGeocoder查找最近的城市

时间:2013-02-12 14:07:43

标签: iphone ios mapkit clgeocoder

所以我一直在看这个问题,我似乎无法在任何地方找到解决方案。我正在尝试在iOS应用中使用CLGeocoder来查找用户在地图上长按的最近城市。我有两个主要问题:

  1. 即使用户非常缩小,并且用户点击说纽约(这是他们想要的),由于缩小地图的方式,CLGeocoder经常返回附近的城市而不是纽约更明显的答案。我无法弄清楚如何设置搜索的“模糊性”以克服这个问题。
  2. 在许多情况下,City字段在返回的地标对象中为空,最常见于沙漠或海洋等偏远地区。在这种情况下,理想情况下,我希望找到实际定义City的最近对象,但无法确定如何执行此操作。

1 个答案:

答案 0 :(得分:0)

使用CLGeocoder

获取您所在位置的所有详细信息
- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation
{
    [currentLocation stopUpdatingLocation];

    CLLocation *myLocation = [[CLLocation alloc] initWithLatitude:latitudeValue longitude:longitudeValue];


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

    [geoCoder reverseGeocodeLocation:myLocation completionHandler:^(NSArray *placemarks, NSError *error) {

        if(!error)
        {
            for (CLPlacemark * placemark in placemarks)
            {
                NSLog(@"placemark.ISOcountryCode %@",placemark.ISOcountryCode);
                NSLog(@"placemark.country %@",placemark.country);
                NSLog(@"placemark.postalCode %@",placemark.postalCode);
                NSLog(@"placemark.administrativeArea %@",placemark.administrativeArea);
                NSLog(@"placemark.locality %@",placemark.locality);
                NSLog(@"placemark.subLocality %@",placemark.subLocality);
                NSLog(@"placemark.subThoroughfare %@",placemark.subThoroughfare);

            }

        }
        else
        {
            NSLog(@"failed getting city: %@", [error description]);
        }

    }];


}