how can I show an image in map pin annotation?

孤人 提交于 2020-01-22 10:33:27

问题


i have one view >> subview mkmapview .

in that i want to show image . ...my current image is like this.

and i want to show like this

how can i do this ? how can i add image in this anotation.


回答1:


In your MKAnnotationView set the leftCalloutAccessoryView property

leftCalloutAccessoryView The view to display on the left side of the standard callout bubble.

@property (retain, nonatomic) UIView *leftCalloutAccessoryView Discussion The default value of this property is nil. The left callout view is typically used to display information about the annotation or to link to custom information provided by your application. The height of your view should be 32 pixels or less.

If the view you specify is also a descendant of the UIControl class, you can use the map view’s delegate to receive notifications when your control is tapped. If it does not descend from UIControl, your view is responsible for handling any touch events within its bounds.

Availability Available in iOS 3.0 and later. See Also @property canShowCallout Related Sample Code MapCallouts Declared In MKAnnotationView.h

Apple docs




回答2:


The image you're talking about corresponds to the leftCalloutAccessoryView property of MKAnnotationView.

Extract from the doc :

leftCalloutAccessoryView The view to display on the left side of the standard callout bubble.

You can implement a methods such as this :

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation {

    MKAnnotationView* annotationView = nil;

    MyAnnotation *myAnnotation = (MyAnnotation*) annotation;
    NSString* identifier = @"Pin";
    MKPinAnnotationView* annView = (MKPinAnnotationView*)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];

    if(nil == annView) {
        annView = [[[MKPinAnnotationView alloc] initWithAnnotation:myAnnotation reuseIdentifier:identifier] autorelease];
    }

    UIImageView *leftIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"LeftIconImage.png"]];
    annView.leftCalloutAccessoryView = leftIconView;

    return annotationView;
}

Hope this helps, Vincent




回答3:


v.leftCalloutAccessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img"]];

where v - is the view of your annotation(MKAnnotationView) Or if you want complete solution - here it is:

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{

    NSString *Identifier = [NSString stringWithFormat:@"%f%f",annotation.coordinate.latitude,annotation.coordinate.longitude];
    MKPinAnnotationView *annView= (MKPinAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:Identifier];
    if (annView==nil) {
        annView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:Identifier] autorelease];
    }

    if (![annotation isKindOfClass:[MyAnnotation class]]) {
        return nil;
    }

    RightCalloutAccessoryBtn* rightButton = [RightCalloutAccessoryBtn buttonWithType:UIButtonTypeDetailDisclosure];
    annView.rightCalloutAccessoryView = rightButton;
    annView.leftCalloutAccessoryView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"img"]] autorelease];
    annView.canShowCallout = YES;
    return annView;
}

You should write this code on the class of your map's delegate



来源:https://stackoverflow.com/questions/4759947/how-can-i-show-an-image-in-map-pin-annotation

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!