Custom MKAnnotationView with frame,icon and image

前端 未结 2 2033
借酒劲吻你
借酒劲吻你 2020-12-13 16:26

I\'ve been searching for a similar solution on how to design a custom MKAnnotationView like this one.

\"enter

相关标签:
2条回答
  • 2020-12-13 16:32
    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    
    
        static NSString *AnnotationViewID = @"annotationViewID";
    
        MKAnnotationView *annotationView = (MKAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationViewID];
    
        if (annotationView == nil)
        {
            annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationViewID];
        }
    
        UIImage *imgPinBorder = [UIImage imageNamed:@"pinBorder.png"];
        UIImageView *imageViewPinBorder = [[UIImageView alloc] initWithImage:imgPinBorder];
        imageViewPinBorder.center = annotationView.center;
        [annotationView addSubview:imageViewPinBorder];
    
        UIImage *img = [UIImage imageNamed:@"myIcon.png"];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:img];
        imageView.center = annotationView.center;
        [annotationView addSubview:imageView];
    
        annotationView.annotation = annotation;
    
    
        UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        [rightButton addTarget:self action:nil forControlEvents:UIControlEventTouchUpInside];
        [rightButton setTitle:annotation.title forState:UIControlStateNormal];
    
        annotationView.rightCalloutAccessoryView = rightButton;
        annotationView.canShowCallout = YES;
        annotationView.draggable = NO;
    
    
    
        return annotationView;
    }
    
    0 讨论(0)
  • 2020-12-13 16:36

    here in your code

    else
    {
        MKAnnotationView *annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];
        annotationView.canShowCallout = YES;
    
        //change here
        annotationView.image = [UIImage imageNamed:[NSString stringWithFormat:@"F.png"]];  
    
        UIImage *frame = [UIImage imageNamed:[NSString stringWithFormat:@"F.png"];
        UIImage *image = theImageInFrameInner;
    
        UIGraphicsBeginImageContext(CGSizeMake(pin.size.width, pin.size.height));
    
        [frame drawInRect:CGRectMake(0, 0, frame.size.width, frame.size.height)];
        [image drawInRect:CGRectMake(2, 2, 60, 60)]; // the frame your inner image
        //maybe you should draw the left bottom icon here, 
    
        //then set back the new image, done
        annotationView.image = UIGraphicsGetImageFromCurrentImageContext();
    
        UIGraphicsEndImageContext();
    
        UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        [rightButton addTarget:self action:@selector(writeSomething:) forControlEvents:UIControlEventTouchUpInside];
        [rightButton setTitle:annotation.title forState:UIControlStateNormal];
    
        annotationView.rightCalloutAccessoryView = rightButton;
        annotationView.canShowCallout = YES;
        annotationView.draggable = NO;
        return annotationView;
    }
    
    0 讨论(0)
提交回复
热议问题