Использование CLGeocoder для поиска ближайшего города

Итак, я смотрю на это некоторое время, и я не могу найти решение нигде. Я пытаюсь использовать CLGeocoder в приложении iOS, чтобы найти ближайший город, к которому пользователь долго нажимает на карту. У меня две основные проблемы:

  1. Даже если пользователь сильно уменьшил масштаб и нажал, скажем, на Нью-Йорк (что он и намеревался сделать), из-за того, насколько сильно уменьшена карта, CLGeocoder часто возвращает ближайший город вместо более очевидного ответа Нью-Йорка. Я не могу понять, как установить «нечеткость» поиска, чтобы решить эту проблему.
  2. Во многих случаях поле City пусто в возвращаемом объекте метки, чаще всего в удаленных областях, таких как пустыни или океаны. В этом случае в идеале я хотел бы найти ближайший объект, для которого на самом деле определено City, но я не могу понять, как это сделать.

person Harrison James Sweeney    schedule 12.02.2013    source источник
comment
Чтобы уточнить, я провел еще несколько тестов, и кажется, что ни Apple Maps, ни Google Maps для iOS не решают эту проблему. Оба будут давать адреса конкретных улиц для сброшенных булавок, даже если они настолько уменьшены, что вы не можете ориентироваться на улицу.   -  person Harrison James Sweeney    schedule 13.02.2013


Ответы (1)


Для получения всей информации о вашем местоположении с помощью 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]);
        }

    }];


}
person iPatel    schedule 12.02.2013
comment
Спасибо, но вы неправильно поняли мой вопрос. У меня CLGeocoder работает хорошо, мне просто интересно, как управлять поиском ближайшего города, а не города или района. - person Harrison James Sweeney; 13.02.2013