【问题标题】:multiple annotation in map messing地图混乱中的多个注释
【发布时间】:2013-05-23 06:41:26
【问题描述】:

我在地图中有点作为引脚注释并显示自定义注释视图。我的问题是,当我单击点时,有时自定义注释视图后面的点会出现在自定义注释视图的前面,而不是显示在它后面。

-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{ 
    MKAnnotationView *annotationView;
    PinAnnotationView *pinView = nil;
    NSString *identifier;
    if ([annotation isKindOfClass:[DisplayMap class]]) 
    {
        identifier = @"Pin";
        NSInteger myid = ((DisplayMap *)annotation).takeid;
        MKAnnotationView *pinView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
        DisplayMap *a = (DisplayMap *)annotation;
        pinView.annotation=a;
        if (myid == 1) 
        {
           UIImage *test = [UIImage imageNamed:@"red_dot.png"];
           pinView.image = test;
           pinView.opaque = NO;
       }
       else if (myid == 2)
       {
           UIImage *test = [UIImage imageNamed:@"blue_dot.png"];
           pinView.image = test;
           pinView.opaque = NO;
       }
       else {
           UIImage *test = [UIImage imageNamed:@"green_dot.png"];
           pinView.image = test;
           pinView.opaque = NO;
       }
    return pinView;
  }
  else if ([annotation isKindOfClass:[CalloutAnnotation class]])
  {
       identifier = [NSString stringWithFormat:@"Callout%d",pinView.tag];
       annotationView = [[CalloutAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
       CalloutAnnotation *calloutAnnotation = (CalloutAnnotation *)annotation;
       ((CalloutAnnotationView *)annotationView).title = calloutAnnotation.title;
       ((CalloutAnnotationView *)annotationView).iTag = calloutAnnotation.iTag;
       [annotationView setNeedsDisplay];
       [UIView animateWithDuration:0.5f
                     animations:^(void) {
                         mapView.centerCoordinate = calloutAnnotation.coordinate;
                     }];
       annotationView.annotation = annotation;
       return annotationView;
  }
}


-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view1
{
    if ([view1.annotation isKindOfClass:[DisplayMap class]])
    {
    DisplayMap *pinAnnotation = ((DisplayMap *)view1.annotation);
    LoginDetail *obj =    [[appDelegate mapArray] objectAtIndex:pinAnnotation.iTag];
    [mapView removeAnnotations:annotationRemoveArray];

    CalloutAnnotation *calloutAnnotation = [[CalloutAnnotation alloc] init];
    calloutAnnotation.title      = pinAnnotation.title;
    pinAnnotation.calloutAnnotation = calloutAnnotation;
    [mapView addAnnotation:calloutAnnotation];
    [annotationRemoveArray addObject:calloutAnnotation];
    [self setzoomonselectannotation:pinAnnotation.coordinate];
    }
}

【问题讨论】:

  • 请改进问题
  • 尝试删除所有其他注释并仅显示当前注释
  • @Rushabh 现在你能帮我吗

标签: iphone ios map


【解决方案1】:

标注窗口也是一个注释视图。那是错误的;)

按照提示进行操作: How to customize the callout bubble for MKAnnotationView?

基本上就是他们所说的:让标注成为图钉本身的子视图

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2011-11-29
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    相关资源
    最近更新 更多