MKAnnotation显示所有引脚标题而无需单击

时间:2012-07-05 09:46:33

标签: ios mkannotation mkannotationview

我正在以编程方式添加多个注释:

- (void)addAnnotations{
    NSInteger i;
    CLLocationCoordinate2D location;

    for ( i = 0 ; i < [storeLatitude count] ; i ++ ){
        location.latitude = [[storeLatitude objectAtIndex:i] floatValue];
        location.longitude = [[storeLongitude objectAtIndex:i] floatValue];

        MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:[listOfStores objectAtIndex:i] andCoordinate:location];
        [self.mapView addAnnotation:newAnnotation];
        [newAnnotation release];    
    }
}

是否可以在不点击的情况下显示所有引脚的标题?

5 个答案:

答案 0 :(得分:7)

声明一个数组来存储所有注释并使用MKMapView的setSelectedAnnotations:(NSArray *)方法

- (void)addAnnotations {

    NSMutableArray *annotationArray = [[NSMutableArray alloc]init];
    NSInteger i;
    CLLocationCoordinate2D location;

    for ( i = 0 ; i < [storeLatitude count] ; i ++ ) {
        location.latitude = [[storeLatitude objectAtIndex:i] floatValue];
        location.longitude = [[storeLongitude objectAtIndex:i] floatValue];

        MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:    [listOfStores objectAtIndex:i] andCoordinate:location];
        [annotationArray addObject:newAnnotation];
        [self.mapView addAnnotation:newAnnotation];    
    }
    [mapView setSelectedAnnotations:annotationArray];
}

答案 1 :(得分:4)

试试这个。它会自动显示标题。

-(void)mapView:(MKMapView *)mapView1 didAddAnnotationViews:(NSArray *)views
{
    [self.mapView selectAnnotation:yourannotationpin animated:NO];
}

答案 2 :(得分:0)

U可以使用自定义注释视图来显示标题和子标题,而无需单击图钉。 有一个自定义注释视图的教程。

This app contains the custom annotation view

答案 3 :(得分:0)

无法找到setSelectedAnnotations的快速版本。下面显示了标题,但是对于多个移动目标,只有数组中最后一个的标题才会显示,直到didAdd的下一次迭代。所以仍然在寻找更通用/完整的解决方案。

func mapView(_ mapView: MKMapView, didAdd views: [MKAnnotationView]) {
    for view in views {
        if let annotation = view.annotation, let title = annotation.title {
            print("displaying:\(title!)")
            mapView.selectAnnotation( annotation, animated: true )
        }
    }
}

答案 4 :(得分:-3)

不可能。您必须单击pin Annotation才能显示标题。