2011-07-29 14 views
1

mapForwardNotationは地図上を移動または拡大するまで呼び出されていません。このため、地図に触れるまでは注釈が表示されません。どんな考え?viewForAnnotationはマップが移動されるまで呼び出されません

NSString *incident; 
for (incident in weekFeed) { 
    NSString *finalCoordinates = [[NSString alloc] initWithFormat:@"%@", [incident valueForKey:@"coordinates"]]; 

    NSArray *coordinatesArray = [finalCoordinates componentsSeparatedByString:@","]; 

    latcoord = (@"%@", [coordinatesArray objectAtIndex:0]); 
    longcoord = (@"%@", [coordinatesArray objectAtIndex:1]); 

    // Final Logs 
    NSLog(@"Coordinates in NSString: [%@] - [%@]", latcoord, longcoord); 

    CLLocationCoordinate2D coord; 
    coord.latitude = [latcoord doubleValue]; 
    coord.longitude = [longcoord doubleValue]; 


    DisplayMap *ann = [[DisplayMap alloc] init]; 
    ann.title = [NSString stringWithFormat: @"%@", [incident valueForKey:@"incident_type"]]; 
    ann.subtitle = [NSString stringWithFormat: @"%@", [incident valueForKey:@"note"]]; 
    ann.coordinate = coord; 

    [mapView addAnnotation:ann]; 

    [ann release]; 
} 


// Custom Map Markers 
-(MKAnnotationView *)mapView:(MKMapView *)map viewForAnnotation:(id <MKAnnotation>)annotation { 

    if ([annotation isKindOfClass:[MKUserLocation class]]) 
     return nil; //return nil to use default blue dot view 

    static NSString *AnnotationViewID = @"annotationViewID"; 
    MKAnnotationView *annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID]; 

    if (annotationView == nil) { 
     annotationView = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID] autorelease]; 
     } 

    annotationView.canShowCallout = YES; 

    if ([annotationView.annotation.title isEqualToString:@"one"]) { 
     UIImage *pinImage = [UIImage imageNamed:@"marker_1.png"]; 
     [annotationView setImage:pinImage]; 
     } 

    if ([annotationView.annotation.title isEqualToString:@"two"]) { 
     UIImage *pinImage = [UIImage imageNamed:@"marker_2.png"]; 
     [annotationView setImage:pinImage]; 
     } 

    annotationView.annotation = annotation; 
    return annotationView; 
    } 

- (void) mapView:(MKMapView *)mapV didAddAnnotationViews:(NSArray *)views { 
    CGRect visibleRect = [mapV annotationVisibleRect]; 
    for (MKAnnotationView *view in views) { 
     CGRect endFrame = view.frame; 

     CGRect startFrame = endFrame; startFrame.origin.y = visibleRect.origin.y - startFrame.size.height; 
     view.frame = startFrame; 

     [UIView beginAnimations:@"drop" context:NULL]; 
     [UIView setAnimationDuration:0.4]; 

     view.frame = endFrame; 

     [UIView commitAnimations]; 
    } 
} 
+0

ここで、あなたはur注釈を追加しています。私はあなたがmapView:regionDidChange:メソッド –

+0

にそれを追加していないことを望んでいない場合は、あなたのviewForAnnotationは、領域が変更された場合にのみ呼び出されるように思われるので、mapView:setRegion:アニメーションメソッドを使用して領域をプログラム的に設定し、注釈を表示する –

+0

これはあなたを助けましたか? –

答えて

2

私は[self performSelectorInBackground:@selector(loadEverything) withObject:self];代わりのdetachThreadSelectorを使用して、それを解決しました。そのコード(viewDidLoad内)はもともとは投稿されていません。

皆さんありがとうございます!

関連する問題