2012-06-27 4 views
0

Я разбор этого JSON-файл (правильно, он работает с UITextFields):Добавления аннотаций для координат MKMapView

{"longitude":["37.786793","39.388528"],"latitude":["-122.395416","-78.887734"]} 

Ind создания MapViews, с соответствующими аннотациями следующим образом:

NSArray *allKeys2 = [DictionaryMap allKeys]; 

for (int h = 0; h < [allKeys2 count]; h++) { 


CGRect mapFrame = CGRectMake(400, e, 200, 110); 

MKMapView *mapView2 = [[MKMapView alloc] initWithFrame:mapFrame]; 
[image1 addSubview:mapView2]; 







    NSString *key2 = [allKeys2 objectAtIndex:i]; 
    NSObject *obj2 = [DictionaryMap objectForKey:key2]; 




    NSString *address = [NSString stringWithFormat:@"%@", obj2]; 
    float stringFloat = [address floatValue]; 
    float stringFloat2 = [key2 floatValue]; 

    CLLocationCoordinate2D anyLocation; 

    anyLocation.longitude = stringFloat; 

    anyLocation.latitude = stringFloat2; 







    MKPointAnnotation *annotationPoint2 = [[MKPointAnnotation alloc] init]; annotationPoint2.coordinate = anyLocation; 

    annotationPoint2.title = @"Event"; 
    annotationPoint2.subtitle = @"Microsoft's headquarters2"; 
    [mapView2 addAnnotation:annotationPoint2]; 


    [mapView2.userLocation setTitle:@"I am here"]; 

    [mapView2.userLocation addObserver:self 
           forKeyPath:@"location" 
            options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) 

            context:NULL]; 

    [mapView2 setShowsUserLocation:NO]; 

    [MapViewArray addObject:mapView2]; 

    if (MapViewArray == nil)MapViewArray = [[NSMutableArray alloc]init]; 
    [MapViewArray addObject: mapView2]; 


    }} 

}while(g < f); 

... Я хочу, чтобы первый вид карты отображал первый координатный штифт, а второй - вторую пару координат. Но теперь он рисует на всех картах один и тот же вывод, соответствующий последним координатам, а не первым и вторым ... соответственно. Этот метод работает для текста UITextField, поэтому я не могу найти проблему.

Пожалуйста, помогите!

EDIT:

NSString *filenameMap = [NSString stringWithFormat:@"%@%@Map", destDir, NavBar.topItem.title]; 

NSString *MapPath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@Map", NavBar.topItem.title]]; 

[self.restClient loadFile:filenameMap intoPath:MapPath]; 


NSString *fileContentMap = [[NSString alloc] initWithContentsOfFile:MapPath]; 

SBJsonParser *parserMap = [[SBJsonParser alloc] init]; 

NSDictionary *dataMap = (NSDictionary *) [parserMap objectWithString:fileContentMap error:nil]; 


NSArray *MaparrayLongitude = [dataMap objectForKey:@"longitude"]; 
NSArray *MaparrayLatitude = [dataMap objectForKey:@"latitude"]; 


NSDictionary* DictionaryMap = [NSDictionary dictionaryWithObjects:MaparrayLatitude forKeys:MaparrayLongitude]; 

ответ

0

Другой взять:

Вы, вероятно, не хотите сопоставить широты к долготе в DictionaryMap. Как насчет создания NSArray из NSDictionaries, где каждый словарь имеет ключ «широты» и ключ «долготы»?

Кроме того, у вас есть «[MapViewArray addObject: mapView2]» дважды в вашем коде.

А что такое "g"? Возможно, добавьте некоторые записи в свой цикл, чтобы вы могли видеть, что создается?

+0

Нет, я на самом деле хочу создать много видов карт, каждый с одной аннотацией. Первый вид карты имеет первые контактные координаты, второй вид карты имеет две координаты штырей ... – Alessandro

+0

Посмотрите на мое редактирование, я добавил код, который я использую для анализа файла, возможно, это помогает, потому что предоставленный вами код дает мне ошибки (несовместимый id) – Alessandro

+0

У меня была проблема с NSMutableArray ... решена – Alessandro

Смежные вопросы