Получить координаты, указав название места в iphone - PullRequest
1 голос
/ 15 апреля 2011

Можно ли получить координаты, указав название места в iPhone?Я не хочу использовать какие-либо веб-службы, поскольку они имеют несколько ограничений.Могу ли я сделать это с помощью iPhone SDK?

Заранее спасибо.

Ответы [ 5 ]

0 голосов
/ 14 октября 2014
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:YOUR_LOCATION completionHandler:^(NSArray* placemarks, NSError* error)     
{
    NSLog(@"completed");
    if ( error )
    {
        NSLog(@"error = %@", error );
    }
    else
    {
        //Here you get information about the place in placemarks array
    }
}];
0 голосов
/ 15 апреля 2011

Вы можете получить координаты, вызвав этот метод. Этот метод требует адрес (название места).

-(CLLocationCoordinate2D) addressLocation:(NSString *)addrss {
    NSString *urlString = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", 
                           [addrss stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSString *locationString = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlString]];
    NSArray *listItems = [locationString componentsSeparatedByString:@","];

double latitude = 0.0;
double longitude = 0.0;

if([listItems count] >= 4 && [[listItems objectAtIndex:0] isEqualToString:@"200"]) {
    latitude = [[listItems objectAtIndex:2] doubleValue];
    longitude = [[listItems objectAtIndex:3] doubleValue];
}
else {
    //Show error
}
CLLocationCoordinate2D location;
location.latitude = latitude;
location.longitude = longitude;

return location;

}

0 голосов
/ 15 апреля 2011

Короткий ответ - нет, вы не можете дать адрес и получить долготу / широту. Несколько человек написали библиотеки, которые используют различные веб-сервисы, подробности см. В этом ответе: Прямое геокодирование с iPhone .

Я знаю, что вы сказали, что не хотите использовать различные веб-сервисы, но, ну, вы не можете получить все бесплатно. Чьи-то циклы ЦП должны будут выполнить поиск. Мне кажется, что у большинства из них есть условия, приемлемые для большинства приложений.

0 голосов
/ 15 апреля 2011

Да, это возможно, но вы должны сделать некоторую работу.Я сейчас вкладываю эти усилия в один из моих проектов.Географическая база данных GeoNames охватывает все страны и содержит более восьми миллионов географических названий, которые можно бесплатно загрузить.Я добавляю их цитат с населением более 1000 3.9M zip file в мой проект.Он содержит длинные / лат каждого города.Я собираюсь разобрать каждый город в пользовательский объект NSObject и загрузить их в Базовые данные .

В моем проекте вместо поиска по названию города я собираюсь найти ближайший город с определенной координатой широты / долготы. Формула Хаверсайна используется для расчета расстояния между двумя точками на сфере.Вот формула, написанная в Objective-C и Perl .Мой текущий прогресс в разборе этих данных можно найти здесь .У меня еще есть работа для завершения.

0 голосов
/ 15 апреля 2011

Как упомянул @ raj2raaz , мы не можем получить координаты, просто указав название места, вам нужно использовать веб-сервисы в iPhone, чтобы получить координаты.

http://iphonesdksnippets.com/post/2010/02/15/Get-Coordinates-from-Address.aspx

...