2014-08-06 4 views
0
-(void)setLocation 
{ 
    MKCoordinateRegion myregion; 
    CLLocationCoordinate2D center; 

    center.latitude=Nashik_Latitude; 
    center.longitude=Nashik_Longitude; 

    MKCoordinateSpan span; 
    span.latitudeDelta=the_span; 
    span.longitudeDelta=the_span; 

    myregion.center=center; 
    myregion.span=span; 

    [self.mapView setRegion:myregion animated:YES]; 
    CLLocationCoordinate2D location; 
    Annotation *myann; 
    for (APIElement *element in feedsFromRoot) 
    { 
     myann=[[Annotation alloc]init]; 
     CLLocationCoordinate2D coord; 
     coord.longitude = (CLLocationDegrees)[element.strlat doubleValue]; 
     coord.latitude = (CLLocationDegrees)[element.strlong doubleValue]; 
     location.latitude=coord.latitude; 
     location.longitude=coord.longitude; 
     myann.coordinate=location; 
     myann.title=element.strName; 
     myann.subtitle=element.strVicinity; 
     [locations addObject:myann]; 
    } 
    [self.mapView addAnnotations:locations]; 
} 

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

Я прочитал широту и долготу от feedsFromRoot массив. Данные извлекаются правильно, но на карте все еще отсутствуют аннотации. Является ли письменный код в правильной форме или я должен внести какие-либо изменения?

Данные собираются путем разбора JSOn и хранятся в массиве feedMromRoot.

+0

'coord.longitude' устанавливается в' strlat' (не должно быть 'strlong'). Такая же проблема с 'coord.latitude'. – Anna

ответ

0

Попробуйте под кодом ... Вы должны добавить новый объект Annotation на каждой итерации.

-(void)setLocation 
{ 

    MKCoordinateRegion myregion; 
    CLLocationCoordinate2D center; 

    center.latitude=Nashik_Latitude; 
    center.longitude=Nashik_Longitude; 

    MKCoordinateSpan span; 
    span.latitudeDelta=the_span; 
    span.longitudeDelta=the_span; 

    myregion.center=center; 
    myregion.span=span; 

    [self.mapView setRegion:myregion animated:YES]; 


    for (APIElement *element in feedsFromRoot) 
    { 
     Annotation *myann=[[Annotation alloc]init]; 
     CLLocationCoordinate2D coord; 
     coord.longitude = (CLLocationDegrees)[element.strlat doubleValue]; 
     coord.latitude = (CLLocationDegrees)[element.strlong doubleValue]; 
     CLLocationCoordinate2D location; 
     location.latitude=coord.latitude; 
     location.longitude=coord.longitude; 
     myann.coordinate=location; 
     myann.title=element.strName; 
     myann.subtitle=element.strVicinity; 
     [locations addObject:myann]; 
    } 
    [self.mapView addAnnotations:locations]; 
} 
+0

Код в вопросе _is_ создания нового объекта (alloc + init) на каждой итерации. Только _declaration_ переменной находится вне, что нормально. – Anna

+0

Это фактически изменение свойств одного и того же объекта на каждой итерации. это может быть проблемой. – BhushanVU

+0

Нет, новый объект создается на каждой итерации, он добавляется к массиву, который сохраняет его. На следующей итерации создается новый объект, который не изменяет предыдущие. Одна декларация, вроде 'Annotation * myann;', не создает экземпляр объекта. – Anna

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