MKMapView Размещение булавки в стране, используя ее название - PullRequest
1 голос
/ 28 марта 2012

У меня есть массив названий стран, и я хочу разместить их в MKMapView в качестве меток.Так, например, если Франция находится в массиве countryName, я бы хотел, чтобы в центре Франции была расположена булавка.

Есть ли способ сделать это без сохранения значения lat / long для каждой страны?

Я хотел бы сделать эту работу в автономном режиме и требовать, чтобы карта была только в ее самом основном и полностью уменьшенном изображении мира.

Я считаю, что MKMapView содержит некоторую базовую геоинформацию, так что вышевозможно без использования GLGeocoder и подключения к интернету?

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

попробуйте эту функцию для получения широты и долготы для адреса :-( если вы используете только название страны, тогда мы получим центральный лат для этой страны)

-(CLLocationCoordinate2D) getLocationFromAddressString:(NSString*) countryStr {
    NSString *urlAddressStr = [NSString stringWithFormat:@"http://maps.google.com/maps/geo?q=%@&output=csv", 
                           [countryStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    NSString *locationStr = [NSString stringWithContentsOfURL:[NSURL URLWithString:urlAddressStr]];
    NSArray *items = [locationStr componentsSeparatedByString:@","];

    double lat = 0.0;
    double long = 0.0;

    if([items count] >= 4 && [[items objectAtIndex:0] isEqualToString:@"200"])
   {
        lat = [[items objectAtIndex:2] doubleValue];
        long = [[items objectAtIndex:3] doubleValue];
    }
    CLLocationCoordinate2D location;
    location.latitude = lat;
    location.longitude = long;

    return location;
}

после получения широты и долготы 1) добавить использовать mapKit Framework

3) установить широту и долготу в регионе

3) используйте эту функцию

- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id )annotation
1 голос
/ 28 марта 2012

Этот метод не будет работать, если вы не сохраните файл данных (sqlite) в приложении и не запросите базу данных при размещении контактов на карте. Но это гарантирует доступность данных карты в автономном режиме.

В основном вы можете использовать доступный файл формы http://thematicmapping.org/downloads/world_borders.php

Импортируйте его как файл sqlite с помощью описанной команды .loadshp. http://www.gaia -gis.it / Гея-Грехи / SpatiaLite-учебник-2.3.1.html

После того, как вы импортировали файл sqlite, вы можете просто запросить что-то вроде

select lon,lat from world_borders where name like 'Zambia';

, где

lon = longitude, 
lat = latitude, 
world_borders = table name
and 'Zambia' = country name.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...