开发者

Fetching an Image path in a plist

开发者 https://www.devze.com 2023-04-03 19:03 出处:网络
I am trying to fetch an image path (eg. annotation1.jpg ) stored in a plist to put in a custom callout, depending on which POI it is.

I am trying to fetch an image path (eg. annotation1.jpg ) stored in a plist to put in a custom callout, depending on which POI it is. Right now, I am fetching only one static image.

How can I implement that in my code?

   - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
        if (annotation == self.calloutAnnotation) {
            CalloutMapAnnotationView *calloutMapAnnotationView = (CalloutMapAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:@"CalloutAnnotation"];
            if (!calloutMapAnnotationView) {
                calloutMapAnnotationView = [[[CalloutMapAnnotationView alloc] initWithAnnotation:annotation 
                                                                                 reuseIdentifier:@"CalloutAnnotation"] autorelease];
                calloutMapAnnotationView.contentHeight = 78.0f;
                UIImage *asynchronyLogo = [UIImage imageNamed:@"something.png"];
                UIImageView *asynchronyLogoView = [[[UIImageView alloc] initWithImage:asynchronyLogo] autorelease];
                asynchronyLogoView.frame = CGRectMake(5, 2, asynchronyLogoView.frame.size.width, asynchronyLogoView.frame.size.height);
                [calloutMapAnnotationView.contentView addSubview:asynchronyLogoView];
            }
            calloutMapAnnotationView.parentAnnotationView = self.selectedAnnotationView;
            calloutMapAnnotationView.mapView = self.mapView;
            return calloutMapAnnotationView;
        } else if ([annotation isKindOfClass:[MyHomeAnnotation class]]) {
            MKPinAnnotationView *annotationView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation 
                                                                                   reuseIdentifier:@"CustomAnnotation"] autorelease];
            annotationView.canShowCallout = NO;
            annotationView.pinColor = MKPinAnnotationColorGreen;
            return annotationView;
        }else if ([annotation isKindOfClass:[MyMapAnnotation class]]) {
            MKPinAnnotationView *annotationView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation 
                                                         开发者_运维百科                          reuseIdentifier:@"NormalAnnotation"] autorelease];
            annotationView.canShowCallout = NO;
            annotationView.pinColor = MKPinAnnotationColorRed;
            return annotationView;
        }


        return nil;
    }

Thank you for your help!


You can load a PLIST into an NSDictionary:

NSDictionary *myDictionary = [NSMutableDictionary dictionaryWithContentsOfFile:pathAndFileName];

Once you have the dictionary, you can pull out the key you need with:

NSString *imageFileName = [myDictionary objectForKey:@"imageFileName"];

You can then create the image just as you have (as long as it is in the bundle) with:

UIImage *image = [UIImage imageNamed:imageFileName];
0

精彩评论

暂无评论...
验证码 换一张
取 消